创建没有出现值的所有行的列表

qltillow  于 2021-06-23  发布在  Mysql
关注(0)|答案(3)|浏览(288)

我有一张这样的table:

fk | value
========
A  |  1
A  |  2
B  |  1
C  |  1

我尝试创建一个fk列表,其中没有出现特定值,例如 2 .
一种尝试是这样做:

SELECT fk 
FROM foo
WHERE value <> 2;

但这还是会回来的 A, B, C ,因为 A 有两个条目,其中一个不是 2 . 我需要 B, C 相反。
我怎样才能解决这个问题?

wfveoks0

wfveoks01#

你可以找到你的 fk 用你的价值Map然后消除它:

SELECT f.fk
FROM foo f
WHERE f.fk NOT IN (SELECT f1.fk FROM foo f1 WHERE f1.value = 2)
im9ewurl

im9ewurl2#

或者使用groupby与having not和条件和结合使用
查询

SELECT 
 foo.fk
FROM
 foo
GROUP BY
 foo.fk
HAVING 
 NOT SUM(foo.value = 2)

请参见演示https://www.db-fiddle.com/f/kyp2ykqdehtkm1e6nsdken/0

pnwntuvh

pnwntuvh3#

使用 not exists :

select f.*
from foo f
where not exists (select 1 from foo f1 where f1.fk = f.fk and f1.value = 2);

相关问题