在SQLite中使用ID选择多行

Geo*_*wil 5 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
Run Code Online (Sandbox Code Playgroud)

这是我的日志中的语法错误:

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.
Run Code Online (Sandbox Code Playgroud)

所以我航行到SQLFiddle尝试看看是否错过了一些东西。它显示相同的行为。在and有条件的情况下,它不会返回任何结果-但可以对单个ID或一系列ID运行查询。

我是在做错什么还是这是SQLite的限制?

更新:

产生了脑波。Where ID IN(1,3,4)在SQLFiddle上使用Works,所以现在我想重新调整问题的用途,以问问为什么这样做,但是我原来的查询却没有。

Sar*_*NOB 7

使用IN来选择多个元组。

Select * From Equipment Where ID IN (2, 3, 4, 7, 11, 34);
Run Code Online (Sandbox Code Playgroud)

如果您的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;
Run Code Online (Sandbox Code Playgroud)

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