是否可以使用MySQL在子查询中引用外部查询?我知道有一些案件其中这是可能的:在子查询中引用外部查询的表
SELECT *
FROM table t1
WHERE t1.date = (
SELECT MAX(date)
FROM table t2
WHERE t2.id = t1.id
);
但我想,如果这样的事情可以工作:
SELECT u.username, c._postCount
FROM User u
INNER JOIN (
SELECT p.user, COUNT(*) AS _postCount
FROM Posting p
--# This is the reference I would need:
WHERE p.user = u.id
GROUP BY p.user
) c ON c.user = u.id
WHERE u.joinDate < '2009-10-10';
我知道我可以在相同的使用实现了GROUP BY
或通过将外部WHERE
子句拉入子查询中,但我需要这个用于自动SQL生成,并且由于各种其他原因,不能使用其他替代方法。
UPDATE:对不起,这个问题导致了一些困惑:第一个查询只是一个工作的例子,来证明什么,我不需要。
更新2:我需要两个u.id = p.user比较:第一个计算在'2009-10-10'之前加入的用户,而另一个是正确关联表行的连接条件。
为什么更新2? sql将解析派生表'c'并获取所有用户标识符及其后期计数的完整列表。那么'ON c.user = u.id'的连接只会返回满足'u'上的joinDate约束的用户。 – oedo 2010-04-15 16:19:54
哦,你绝对正确,看起来像是我的错误。我会把你的commant标记为接受的答案:) – soulmerge 2010-04-15 16:47:47
谢谢,很高兴我能帮到:) – oedo 2010-04-15 23:28:25