我有一个嵌套的 SQL 查询,它显示了我无法理解的结果。该查询通过 PARTNER_USER 表连接 PARTNER 和 USER 表。合作伙伴基本上是用户的集合,此查询的目的是确定第 20 个用户何时向 ID 为 34 的合作伙伴注册:
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)
但是,如果我将最后第二行更改为
where np.partner_id = p.partner_id
查询失败并显示错误消息“子查询返回超过 1 行”。为什么第一个查询有效,而第二个查询无效?他们看起来和我一样。
谢谢,唐