是否可以使用MySQL在子查询中引用外部查询?我知道有some个 case 可以做到这一点:

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:抱歉,这个问题导致了一些混乱:第一个查询只是一个工作示例,用于演示我需要什么.

UPDATE 2:我需要两个u.id=p.用户比较:第一个统计"2009-10-10"之前加入的用户,而另一个是正确关联表行的加入条件.

推荐答案

我认为这行不通,因为您正在引用派生表"c"作为联接的一部分.

然而,您可以在派生表中go 掉WHERE p.user = u.id并替换为GROUP BY p.user,因为ON c.user = u.id将具有相同的效果.

Mysql相关问答推荐

try 使用TypeORM创建新表时出现SQL语法错误

配置MySQL服务器以管理数千个表

用于搜索从各种表中获得的结果的查询

从MySQL JSON列中检索数组中的所有答案

如果存在N个特殊行,如何 Select 它们,其余的必须填充常规行,总行数不能超过MySQL中的X行?

是否可以使用以EXPLAIN EXTENDED ...开头的 SQL 语句修改数据?

如何根据购买的商品数量查找 unique_ids 的数量

将 AVG 与 HAVING 结合使用

仅计算 DATEDIFF (MySQL) 中的工作日

谁能帮我优化where子句

了解 Spring 和数据库级别的事务?

如何在 MYSQL 中使用多个表进行插值

如何通过if语句对SQL查询进行排序

MySql,将日期和时间列组合成时间戳

提高mysql导入速度

有没有办法在 Zend Framework 1.5 中执行INSERT...ON DUPLICATE KEY UPDATE?

在 MYSQL 中按枚举字段排序

如何将 MySQL 查询结果存储在另一个表中?

MySQL:唯一字段需要是索引吗?

将 UTF8 表上的 latin1 字符转换为 UTF8