Select 在 SQLite 中使用 id 的多行
Select multiple rows using id in SQLite
我正在尝试使用 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
条件下,它 returns 没有结果 - 但 运行 对单个 ID 或一系列 ID 的查询有效。
我是不是做错了什么或者这是 SQLite 的限制?
更新:
灵机一动。使用 Where ID IN(1,3,4)
适用于 SQLFiddle,所以现在我想重新调整我的问题的用途,询问为什么 this 有效,但我的原始查询没有。
使用 IN
而不是 =
之类的,问题将得到解决:
SELECT * FROM Equipment WHERE ID IN (1 , 2);
使用 IN
来 select 您的多个元组。
Select * From Equipment Where ID IN (2, 3, 4, 7, 11, 34);
如果您的 SQLite 或数据库中存在每个 ID,每个元组都将被 selected。
对于您的查询,您的逻辑等式永远不会 select 元组之一,因为 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;
如果每个 id 都存在于您的 SQLite 或数据库中,那么每个元组都将被 selected。
AND
表示两边的条件都必须为真。但是对于任何一行,只能有一个 ID
值。
要检查是否与多个值中的任何一个匹配,请将 AND
替换为 OR
,或使用 IN
.
我正在尝试使用 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
条件下,它 returns 没有结果 - 但 运行 对单个 ID 或一系列 ID 的查询有效。
我是不是做错了什么或者这是 SQLite 的限制?
更新:
灵机一动。使用 Where ID IN(1,3,4)
适用于 SQLFiddle,所以现在我想重新调整我的问题的用途,询问为什么 this 有效,但我的原始查询没有。
使用 IN
而不是 =
之类的,问题将得到解决:
SELECT * FROM Equipment WHERE ID IN (1 , 2);
使用 IN
来 select 您的多个元组。
Select * From Equipment Where ID IN (2, 3, 4, 7, 11, 34);
如果您的 SQLite 或数据库中存在每个 ID,每个元组都将被 selected。
对于您的查询,您的逻辑等式永远不会 select 元组之一,因为 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;
如果每个 id 都存在于您的 SQLite 或数据库中,那么每个元组都将被 selected。
AND
表示两边的条件都必须为真。但是对于任何一行,只能有一个 ID
值。
要检查是否与多个值中的任何一个匹配,请将 AND
替换为 OR
,或使用 IN
.