我正在尝试使用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,试着看看我是否错过了什么.它显示相同的行为.使用和条件,它不返回任何结果 – 但对单个ID或一系列ID运行查询是有效的.
我做错了什么或者这是sqlite的限制?
更新:
有脑波.使用Where ID IN(1,3,4)在sqlFiddle上运行所以现在我想重新调整我的问题,问为什么这样可行,但我的原始查询没有.
解决方法
使用IN选择多个元组.
Select * From Equipment Where ID IN (2,4,7,11,34);
对于您的查询,您的逻辑方程将永远不会选择其中一个元组,因为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;