我有一张带有id和名字的表。 我得到了一份id列表,我需要他们的名字。
据我所知,我有两种选择。
在我的代码中创建一个forloop,执行:
SELECT name from table where id=x
其中x始终是数字。
或者我写了一个这样的查询:
SELECT name from table where id=1 OR id=2 OR id=3
id和名字的列表是巨大的,所以我想你不会想要那样。 id的问题是 id并不总是数字,而是随机生成的包含数字和字符的id。所以谈论范围不是解决方案。
我从性能的角度来问这个问题。
这个问题的解决方案是什么?
答案 0 :(得分:3)
SQLite对查询的大小有limits,因此如果ID的数量没有已知的上限,则不能使用单个查询。
当您阅读多行时(注意:IN (1, 2, 3)
比许多OR更容易),您不知道名称属于哪个ID,除非您也选择该ID,或者按ID对结果进行排序。< / p>
表现不应有明显差异; SQLite是一个没有客户端/服务器通信开销的嵌入式数据库,如果使用预准备语句,则不需要再次解析查询。
答案 1 :(得分:0)
“不错”的解决方案是使用IN
运算符:
SELECT name from table where id in (1,2,3)
答案 2 :(得分:0)
此外,IN运算符是为此目的而构建的语法糖。
SELECT name from table where id IN (1,2,3,4,5,6.....)
答案 3 :(得分:0)
希望您获取ID必须执行查询名称的ID列表作为输入临时表@InputIDTable,
SELECT name from table WHERE ID IN (SELECT id from @InputIDTable)