【发布时间】:2009-01-20 20:27:03
【问题描述】:
我有一个嵌套 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 行”。 为什么第一个查询有效,而第二个查询无效?他们看起来和我一样。
谢谢, 唐
【问题讨论】:
-
您有 19 个限制,但您希望 1 个?
-
不,我的限制是从 19 日到 19 日 + 1 = 20 日。也就是说,我只想要第 20 个结果
-
只是想您可能想知道,关于您在下面的评论,只要外部查询不是连接(如我的其他答案所示),查询似乎就可以正常工作。但是,如果外部查询是连接(如在这个问题中),则会出现“多行”错误。我不知道为什么。 :)
标签: mysql sql mysql-error-1242