mysql - 相关子查询显示计数列

标签 mysql sql subquery

我有以下查询,效果很好:

SELECT c.cust_id, c.cust_type_cd, c.city, count(*) as `count`
FROM customer c
INNER JOIN account a
    ON a.cust_id = c.cust_id
GROUP BY c.cust_id
HAVING `count` = 2;

结果:

+---------+--------------+---------+-------+
| cust_id | cust_type_cd | city    | count |
+---------+--------------+---------+-------+
|       2 | I            | Woburn  |     2 |
|       3 | I            | Quincy  |     2 |
|       6 | I            | Waltham |     2 |
|       8 | I            | Salem   |     2 |
|      10 | B            | Salem   |     2 |
+---------+--------------+---------+-------+

我想使用相关子查询获得相同的结果。我无法制作如上所示的“计数”列:

SELECT c.cust_id, c.cust_type_cd, c.city
FROM customer c
WHERE 2 = (
    SELECT COUNT(*)
    FROM account a
    WHERE a.cust_id = c.cust_id
);

结果:

+---------+--------------+---------+
| cust_id | cust_type_cd | city    |
+---------+--------------+---------+
|       2 | I            | Woburn  |
|       3 | I            | Quincy  |
|       6 | I            | Waltham |
|       8 | I            | Salem   |
|      10 | B            | Salem   |
+---------+--------------+---------+

我怎样才能获得与使用 INNER JOIN 的结果相同的结果并拥有一个“计数”列?

最佳答案

不确定为什么要这样做,但您还需要在 SELECT 部分指定子查询,

SELECT c.cust_id, c.cust_type_cd, c.city, (SELECT COUNT(*)
                                              FROM account a
                                              WHERE a.cust_id = c.cust_id) AS `count`
FROM customer c
WHERE 2 = (
    SELECT COUNT(*)
    FROM account a
    WHERE a.cust_id = c.cust_id
);

关于mysql - 相关子查询显示计数列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48877510/

相关文章:

ios - 使用 NSFetchRequest 查找每个用户最反感的条目

php - 需要具有良好性能的 MYSQL 查询来更新和导入数据(如果不匹配条件则移动到另一个表)

php - 将表的 id 调用到新表并将值插入到该新表中

java - 高效地通过 SQL 数据库进行部分搜索

mysql - 复制表行,但使用另一个值

sql - 当另一个字段已经在 GROUP BY 中时,WHERE 大于计数的 SQL 查询

sql - "Unknown column"因为子查询中的子查询

mysql - 将撇号插入mysql数据库

PHP:在第一个脚本运行后 5 分钟执行脚本

java - JFreechart查看具体数据