mysql - 选择列必须对所有行具有相同值的行

标签 mysql

<分区>

我想编写一个 MySQL 脚本来完成以下操作,我有一个包含这样数据的订单表 -

CustomerNumber | OrderNumber | Fullfilled
-----------------------------------------
001              10001         T
001              10002         T

002              10003         F
002              10004         T

003              10005         T
003              10006         T
003              10007         T

004              10008         T

我想创建一个查询,该查询将仅列出拥有超过 1 个订单的客户编号,并且他们的所有订单都具有 Fullfilled = "T"。

针对上述数据的查询将导致 CustomerNumbers 列表 - “001,003”。

最佳答案

试试这个:

SELECT CustomerNumber 
FROM mytable
GROUP BY CustomerNumber 
HAVING COUNT(DISTINCT OrderNumber) > 1 AND SUM(Fullfilled <> 'T') = 0

查询在其 HAVING 子句中使用了两个谓词:

  • 第一个返回与多个不同订单号相关的客户号
  • 第二个过滤掉至少一个 Fullfilled = 'T' 记录相关的客户编号。

    Demo here

关于mysql - 选择列必须对所有行具有相同值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42440902/

相关文章:

java - 如何使用 JPA 持久保存到 mysqlDB 后获取自动生成的 ID

php - MySQL INSERT --- 获取 ID (auto_increment) 如果一个值是唯一的

MySQL存储过程、内存临时表太慢?

mysql - 如何导出存在匹配值的mySQL表

php - mysql : updating existing column using the column value in prepared query

mysql - 获取首次登录的每个日期的计数

php - Codeigniter - 将列的值传递给另一个表的列

php - 将两个数组插入一个 mysql 行

MySQL CASE 在一个查询中设置一个额外的字段值

mysql - 查询在特定时间后插入行