我有ID
s:1 2 3 4 5
的数据库。我需要返回我的数组中存在的元素(通常在IN ( ... )
中指定的简单数据列表),但不要在DB中退出。
例如,检查值:1, 2, 3, 4, 5, 6, 7
。
因此查询应返回6, 7
。我怎么能用PostgreSQL呢?
答案 0 :(得分:1)
这可以使用select *
from unnest(array[1,2,3,4,5,6]) as t(id)
except
select id
from the_table
select *
from unnest(array[1,2,3,4,5,6]) as t(id)
except
select id
from (values (1), (2), (3), (4) ) as the_table(id)
有一些测试数据:
id
--
5
6
返回
local config = "key1=type1\nkey2=type2\nkey3=type3"
local lines = {}
while true do
local length = config:len()
local s, f = config:find("\n")
if s ~= nil then
table.insert(lines, config:sub(1, s-1))
config = config:sub(f+1, length)
else
table.insert(lines, config)
break
end
end
答案 1 :(得分:0)
如果您想要一个排除列表中所有元素的查询,可以使用NOT IN
语句。
SELECT * FROM someTable WHERE id NOT IN (1, 2, 3, 4, 5);
在您的情况下,您可以从阵列中创建查询。
答案 2 :(得分:0)
with t (id) as (values (1),(2),(3),(4),(5))
select u.id
from
t
right join
unnest(array[1,2,3,4,5,6,7]) u (id) on t.id = u.id
where t.id is null
;
id
----
6
7