我有一个表my_table,列my_column和一个大列表my_list of LONGs。我想找到my_list中存在但my_table.my_column中没有的所有值。如何在不重复大量LONG列表的情况下使用SQL?因为我是Oracle初学者,请详细说明。谢谢。
my_list只是逗号分隔值的简短形式(1,2,3,4),它不是变量,只是一种调用方式。
答案 0 :(得分:2)
如果您的列表是常量,那么将它存储在引用表中并使用建议的连接来过滤记录可能是个好主意。
否则,您可能会达到2个限制:SQL语句的最大长度以及Oracle在列表中允许的最大项目数。后者可以通过将您的大列表拆分为较小的列表来解决(my_column no in(...)and my_column not in(())。
答案 1 :(得分:0)
也许
select * from my_table where my_column not in (my_list)
其中my_list - 以逗号分隔的值列表。 你的名单有多大?
答案 2 :(得分:0)
SELECT * FROM my_list
EXCEPT
SELECT * FROM my_table