理解できない結果を示す入れ子になった SQL クエリがあります。このクエリは、PARTNER_USER テーブルを介して PARTNER テーブルと USER テーブルを結合します。パートナーは基本的にユーザーの集まりであり、このクエリの目的は、ID 34 を持つパートナーに登録された 20 番目のユーザーがいつ登録されたかを把握することです。
select p.partner_id id,
u.created_on launch_date
from user u join partner_user pu
using (user_id) join partner p
using (partner_id)
where p.partner_id = 34
and u.user_id =
(select nu.user_id
from user nu
join partner_user npu using (user_id)
join partner np using (partner_id)
where np.partner_id = 34
order by nu.created_on limit 19, 1)
ただし、最後の2行目を次のように変更すると
where np.partner_id = p.partner_id
クエリは、「サブクエリが複数の行を返します」というエラー メッセージで失敗します。最初のクエリは機能するのに、2 番目のクエリは機能しないのはなぜですか? 彼らは私と同等に見えます。
ありがとう、ドン