SQL或语句与多个选择查询

时间:2016-03-02 08:59:35

标签: sql sqlite

我有一张带有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。所以谈论范围不是解决方案。

我从性能的角度来问这个问题。

这个问题的解决方案是什么?

4 个答案:

答案 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)