gpt4 book ai didi

sql - postgresql - 如何找出哪些词不符合 IN 条件?

转载 作者:行者123 更新时间:2023-11-29 11:39:19 26 4
gpt4 key购买 nike

我有一个类似的查询(在 postgresql 中):

SELECT * 
FROM tablexy
WHERE somevalue IN ("<string1>", "<string2>", "<...>", ... )

比如说,<string1>是 IN somevalue 但 <string2>不是。如何获取括号中不在 somevalue 列中的所有值?

谢谢;)

最佳答案

此解决方案适用于较早的 PostgreSQL 版本(至少 8.2),并且比 Pablo 的回答更快:

SELECT listvalue FROM (VALUES ('a'),('b'),('c')) AS list(listvalue)
LEFT JOIN tablexy ON (tablexy.somevalue=list.listvalue)
WHERE tablexy.somevalue IS NULL;

在我的测试中,如果在 somevalue 上有索引,则在具有一百万行的表上执行此操作在一毫秒内完成,不像 Pablo 的需要几秒钟。

在某些情况下这可能会更快:

SELECT listvalue FROM (VALUES ('a'),('b'),('c')) AS list(listvalue)
WHERE NOT EXISTS (SELECT 1 FROM tablexy where somevalue=listvalue);

这是一个缓慢但明显的方法:

SELECT listvalue FROM (VALUES ('a'),('b'),('c')) AS list(listvalue)
EXCEPT
SELECT somevalue FROM tablexy;

希望这对您有所帮助!

关于sql - postgresql - 如何找出哪些词不符合 IN 条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4691086/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com