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' 之前加入的用户,而另一个是关联的加入条件表格行正确。

最佳答案

这不是你想要的吗?

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/

相关文章:

c# - 在 Microsoft Visual Studio 2013 的 WinForms 中启用

php - 获得上个月的第一天和最后一天的最佳方式?

mysql - 如何在 CentOS7 上更改 MySQL root 帐户密码?

mysql - Rails 控制台通过 id 数组查找用户

mysql - CakePHP - 获取最后一个查询运行

sql - SQL UPDATE中的str_replace?

MySQL 日期格式 - 插入日期的困难

java - 无法让spring boot自动创建数据库模式

mysql - 导入 CSV 以仅更新表中的一列

mysql - 为 mysql/模糊搜索实现 Levenshtein 距离?