gpt4 book ai didi

sql - 在 SQLite WHERE 子句中组合大量条件

转载 作者:行者123 更新时间:2023-12-03 17:39:00 28 4
gpt4 key购买 nike

我需要检索与存储在列表中的 ID 相匹配的记录。在运行时生成的查询很简单:

SELECT [whatever FROM sometable] WHERE (id = 1) or (id = 5) or (id = 33).

相当于

SELECT [whatever FROM sometable] WHERE [id] IN (1, 5, 33);

这很好,但是如果列表包含数百或数千个 ID 怎么办?该语句将是巨大的,并且在某些时候 SQL 解析器可能会崩溃,或者如果没有,性能可能会非常糟糕。 我怎样才能以对检索的记录数量不太敏感的方式执行此操作?

(我不能只遍历列表并一条一条检索记录的原因是我需要数据库为我执行 ORDER BY。记录必须来自按特定字段排序的数据库,而该列表表示用户在网格中选择的记录,可以用多种方式排序。是的,我可以在检索记录后用代码对记录进行排序,但那是计划 B,因为我什至不需要持有它们都在一个数据结构中,只是为了正确排序。)

最佳答案

如果您真的要拥有太多 ID,以至于担心 SQL 解析器崩溃,您可以将它们存储到一个临时表中并进行交叉连接。

只需用一个(主键)列和 ID 创建表,然后用所需的 ID 填充它并使用类似的东西:

SELECT [whatever] FROM [sometable] st, [idtable] it
WHERE st.id = it.id

该查询不会阻塞任何解析器,检索的行将仅限于具有临时表中 ID 的行。

不一定是临时表,当然,只要确保一次只有一个“事物”使用它,您可以将它放在身边。

关于sql - 在 SQLite WHERE 子句中组合大量条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9041476/

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