"如果表中存在价值" - 是否有这样的事情?

use*_*185 3 mysql database

我是mysql的新手,我需要一些帮助.我想从存在值的表中选择所有行,但不选择该值:

例如:

ID           ITEM
--------------------
1             AA
1            22S
1             AB
2            F45
2             BB
3             1
3             1
3             AA
3            F45
3            F67
3             A
......
Run Code Online (Sandbox Code Playgroud)

类似于:SELECT ID,ITEM FROM TABLE1如果项目"AA"除了"AA"之外,它将返回:

1  225,AB
3  1,1,F45,F67,A
Run Code Online (Sandbox Code Playgroud)

这样做的实际查询是什么?谢谢

Gor*_*off 5

您可以使用group_concat()以下方式获取列表:

SELECT ID, group_concat(case when ITEM <> 'AA' then ITEM end)
FROM TABLE1 
group by id
having sum(item = 'AA') > 0;
Run Code Online (Sandbox Code Playgroud)

case语句确保该值不包含在最终列表中. group_concat()忽略NULL价值观.

having子句确保'AA'返回的行至少有一个值.

编辑:

感谢Praveen:

在这里小提琴