admin

在子查询中引用外部查询的表

sql

是否可以在使用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’之前加入的用户,而另一个是正确关联表行的连接条件。


阅读 158

收藏
2021-05-10

共1个答案

admin

我认为这行不通,因为您将派生表“ c”引用为联接的一部分。

但是,您可以只取出WHERE p.user = u.idwhile并GROUP BY p.user在派生表中替换为,因为ON c.user = u.id会产生相同的效果。

2021-05-10