MySQL GROUP BY "and filter"

标签 mysql sql group-by

假设我有这样的查询:

SELECT name, GROUP_CONCAT(number)
FROM objects
GROUP BY name

它输出:

+----------+----------------------+
|  NAME    | GROUP_CONCAT(NUMBER) |
+----------+----------------------+
| false_1  | 2,1                  |
| false_2  | 3,4                  |
| true_1   | 4,3,2,1              |
| true_2   | 2,3                  |
+----------+----------------------+

现在如何返回具有 2 和 3 作为 number 的行?

注意:此查询是分组的 - 表有 10 行,如下所示:

+---------+--------+
|  NAME   | NUMBER |
+---------+--------+
| true_1  | 1      |
| true_1  | 2      |
| true_1  | 3      |
| ...     | ...    |
+---------+--------+

[Link to SQLFiddle]

最佳答案

SELECT name, GROUP_CONCAT(number)
FROM objects
WHERE number IN (2,3)
GROUP BY name
HAVING COUNT(*) = 2

或者如果您想保留名称所具有的所有值(value),

SELECT  a.name, GROUP_CONCAT(A.number)
FROM    objects a
        INNER JOIN
        (
          SELECT name
          FROM objects
          WHERE number IN (2,3)
          GROUP BY name
          HAVING COUNT(*) = 2
        ) b ON a.Name = b.Name
GROUP BY a.name

关于MySQL GROUP BY "and filter",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13308281/

相关文章:

mysql - 使用 access 和 mysql 时,有没有办法查看哪些查询用于生成数据透视表?

php - 如何sql更新两个条件

mysql - 排名不按连载更新

mysql - 如何合并来自同一个表的两个sql查询

php - 生成PDF文件后如何清除内容?

sorting - Gremlin:如何将多个顶点选择()到一个集合中,然后获取具有最高属性值的顶点

mysql - GROUP BY 子句未正确显示行

sql - 我可以将非聚合列与 group by 一起使用吗?

MYSQL 子查询 COUNT WHERE

mysql - 如果我有一个 select 语句,如何轻松地将其分解为 mysql 中的 insert 语句?