是否可以在使用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,并且由于各种其他原因,不能使用任何一种替代方法。
GROUP BY
WHERE
更新 :对不起,这个问题引起了一些混乱:第一个查询只是一个可行的示例,以演示我 不需要的 东西。
更新2 :我需要两个u.id = p.user比较:第一个比较在‘2009-10-10’之前加入的用户,而另一个是正确关联表行的连接条件。
我认为这行不通,因为您将派生表“ c”引用为联接的一部分。
但是,您可以只取出WHERE p.user = u.idwhile并GROUP BY p.user在派生表中替换为,因为ON c.user = u.id会产生相同的效果。
WHERE p.user = u.id
GROUP BY p.user
ON c.user = u.id