是否可以在 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 和由于各种其他原因,不能使用任何一种替代方法。
更新:抱歉,这个问题导致了一些困惑:第一个查询只是一个工作示例,用于演示我不需要需要什么。
更新 2:我需要两个 u.id = p.user 比较:第一个计算在 '2009-10-10' 之前加入的用户,而另一个是关联的加入条件表格行正确。
最佳答案
这不是你想要的吗?
SELECT u.username, c._postCount
FROM User u
INNER JOIN (
SELECT p.user, COUNT(*) AS _postCount
FROM Posting p
GROUP BY p.user
) c ON c.user = u.id
WHERE u.joinDate < '2009-10-10';
这会起作用的原因是加入本身的性质会过滤用户。您不需要明确过滤用户的 WHERE 子句。
https://stackoverflow.com/questions/2645485/