在SQLite中使用id选择多个行

时间:2017-08-18 06:46:20

标签: sqlite syntax-error sqlfiddle

我正在尝试使用WHERE条件从我想要的行的ID中查询SQLite数据库中的特定行。但是,查询没有返回任何结果,它导致我的记录器抛出一个错误,指出存在语法错误。

以下是查询:

Select * From Equipment Where ID = 2 and ID = 3 and ID = 4 and ID = 7 and ID = 11 and ID = 34

以下是我日志中的语法错误:

Aug 17 2017 23:12:23  [Err]: Err002 - Query on Equipment could not be prepared: near "=": syntax error at File: c:\users\geowil\documents\visual studio 2015\projects\ov_pocs\universearc_poc\datasystem.cpp  Line: 323.

所以我航行到SQLFiddle试着看看我是否错过了什么。它显示相同的行为。使用and条件时,它不会返回任何结果 - 但对单个ID或一系列ID运行查询会起作用。

我做错了什么或者这是SQLite的限制?

更新

有脑波。使用Where ID IN(1,3,4)可以在SQLFiddle上运行,所以现在我想重新调整我的问题以询问为什么这个有效,但我的原始查询没有。

3 个答案:

答案 0 :(得分:5)

使用IN选择多个元组。

Select * From Equipment Where ID IN (2, 3, 4, 7, 11, 34);

如果您的SQLite或数据库中存在每个ID,则会选择每个元组。

对于您的查询,您的逻辑等式永远不会选择其中一个元组,因为ID不会有两个或更多值(ID=2 AND ID=3:如果ID等于2则赢了不等于3)。在您的情况下,您必须使用OR代替AND

Select * From Equipment Where ID=2 OR ID=3 OR ID=4 OR ID=7 OR ID=11 OR ID=34;

如果你的SQLite或数据库中存在每个id,那么将选择每个元组。

答案 1 :(得分:1)

使用IN而不是=之类的,问题将得到修复:

SELECT * FROM Equipment WHERE ID IN (1 , 2);

答案 2 :(得分:1)

AND意味着双方的条件必须是真实的。但对于任何一行,只能有一个ID值。

要检查与多个值中的任何一个匹配的匹配项,请将AND替换为OR,或使用IN

相关问题