首页 > 解决方案 > 来自 MySQL 中特定组的结果

问题描述

Suppose I have following information,
#PAN#       #Product#
AAAAAAAAAA  Product1
AAAAAAAAAA  Product2
AAAAAAAAAA  Product3
AAAAAAAAAA  **Product4**
AAAAAAAAAA  Product5
BBBBBBBBBB  Product1
BBBBBBBBBB  Product2
BBBBBBBBBB  Product3
BBBBBBBBBB  **Product4**
BBBBBBBBBB  Product5
CCCCCCCCCC  Product1
DDDDDDDDDD  Product2

我只想要那些产品<>'Product4'(CCCCCCCCCC,DDDDDDDDDD)的PAN,但它给了我错误的结果,因为其他产品(Product1,Product2,Product3,Product5)中也有相同的PAN。所以不是给出结果(CCCCCCCCCC,DDDDDDDDDD),而是给出(AAAAAAAAAA,BBBBBBBBBB,CCCCCCCCCC,DDDDDDDDDD)

标签: mysqlsql

解决方案


左连接的另一种方法

select a.*
from table1 a
left join table1 b on a.PAN = b.PAN and b.Product = 'Product4'
where b.PAN is null

或者使用条件聚合

select a.PAN
from table1 a
group by PAN
having count(case when Product = 'Product4' then 1 else null end) = 0

演示


推荐阅读