查找 table 中不存在的 IDS
Find IDS not present in table
我有一堆md5 id
6c26e28dc6484f0e998fd18b883de4c6
2bf4d0d85709c75adba13ba48011d62c
a67a5bcf329d58d2c23ed422214f66b3
...
其中一些出现在 table 中,一些是新的。如何找到 table 中不存在的这些 ID
如果我这样做
select id from items where id not iN (...)
然后排除所有 ID
如果我这样做
select id from items where id IN (...)
它只提供存在的 ID,我必须以编程方式找到不存在的 ID
如何直接获取不存在的 IDS
数据库:postgresql
你想加入其中,那些在项目中不存在的。
我会将 md5 变成带有 unnest 和 string_to_array
的 table
select * from
( select
unnest(string_to_array('6c26e28dc6484f0e998fd18b883de4c6,
2bf4d0d85709c75adba13ba48011d62c,
a67a5bcf329d58d2c23ed422214f66b3', ','))as md5
) a
where not exists(select 1 from items i where id = md5)
您可以使用 VALUES
子句,这是大多数 RDBMS 中的标准子句:
SELECT src.id
FROM (VALUES
('6c26e28dc6484f0e998fd18b883de4c6'),
('2bf4d0d85709c75adba13ba48011d62c'),
('a67a5bcf329d58d2c23ed422214f66b3')
) AS src(id)
WHERE NOT EXISTS (
SELECT 1
FROM items
WHERE items.id = src.id
)
我有一堆md5 id
6c26e28dc6484f0e998fd18b883de4c6
2bf4d0d85709c75adba13ba48011d62c
a67a5bcf329d58d2c23ed422214f66b3
...
其中一些出现在 table 中,一些是新的。如何找到 table 中不存在的这些 ID 如果我这样做
select id from items where id not iN (...)
然后排除所有 ID
如果我这样做
select id from items where id IN (...)
它只提供存在的 ID,我必须以编程方式找到不存在的 ID 如何直接获取不存在的 IDS
数据库:postgresql
你想加入其中,那些在项目中不存在的。 我会将 md5 变成带有 unnest 和 string_to_array
的 tableselect * from
( select
unnest(string_to_array('6c26e28dc6484f0e998fd18b883de4c6,
2bf4d0d85709c75adba13ba48011d62c,
a67a5bcf329d58d2c23ed422214f66b3', ','))as md5
) a
where not exists(select 1 from items i where id = md5)
您可以使用 VALUES
子句,这是大多数 RDBMS 中的标准子句:
SELECT src.id
FROM (VALUES
('6c26e28dc6484f0e998fd18b883de4c6'),
('2bf4d0d85709c75adba13ba48011d62c'),
('a67a5bcf329d58d2c23ed422214f66b3')
) AS src(id)
WHERE NOT EXISTS (
SELECT 1
FROM items
WHERE items.id = src.id
)