Oracle:如何查找外部列表中存在但列中不存在的值?

发布于 2024-09-29 06:09:33 字数 235 浏览 3 评论 0原文

我有一个表 my_table,其中包含列 my_column 和一个大的 LONG 列表 my_list。我想找到 my_list 中存在但 my_table.my_column 中不存在的所有值。我怎样才能用 SQL 做到这一点,而不重复巨大的 LONG 列表两次?请透露一些信息,因为我是 Oracle 初学者。谢谢。

编辑:

my_list 只是逗号分隔值(1,2,3,4)的缩写形式,它不是变量,只是一种调用方式。

I have a table my_table with column my_column and a large list my_list of LONGs. I'd like to find all values that present in the my_list but not present in the my_table.my_column. How can I do that with SQL without repeating huge list of LONGs twice? Please shed some light as I'm Oracle beginner. Thank you.

EDIT:

my_list is just a short form of comma-separated values (1, 2, 3, 4), it's not a variable, just a way to call.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

爱*していゐ 2024-10-06 06:09:33

如果您的列表是不变的,则最好将其存储在引用表中并按照建议使用联接来过滤记录。

否则,您可能会达到 2 个限制:SQL 语句的最大长度和 Oracle 允许列表中的最大项目数。后者可以通过将大列表拆分为较小的列表来解决(my_column no in (...) 和 my_column not in (...))。

If your list is constant, it's probably a good idea to store it in a reference table and to use a join as suggested to filter the records.

Otherwise you might reach 2 limits: the max length for a SQL statement and the maximum number of items that Oracle allows in a list. The latter can be solved by splitting your big list into smaller lists (my_column no in (...) and my_column not in (...)).

疑心病 2024-10-06 06:09:33

也许

select * from my_table where my_column not in (my_list)

my_list - 逗号分隔值列表在哪里。
您的清单有多大?

maybe

select * from my_table where my_column not in (my_list)

where my_list - comma-separated values list.
and how large is your list?

不知所踪 2024-10-06 06:09:33
SELECT * FROM my_list
EXCEPT
SELECT * FROM my_table
SELECT * FROM my_list
EXCEPT
SELECT * FROM my_table
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文