Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite或运算符_Sql_Sqlite_Select_Where Clause - Fatal编程技术网

SQLite或运算符

SQLite或运算符,sql,sqlite,select,where-clause,Sql,Sqlite,Select,Where Clause,我需要从符合以下条件的表中选择步骤列: 工会代码990和SFMTA或COMMN的集合ID。 我写了以下内容: select Step from .. where Union_Code = 990 AND (SetID = 'SFMTA' or 'COMMN'); 上述查询不返回任何行,解决方案是表达式: select Step from ... where Union_code = 990 and (SetID = 'SFMTA' or SetID = 'COMMN') 我正在使

我需要从符合以下条件的表中选择步骤列: 工会代码990和SFMTA或COMMN的集合ID。 我写了以下内容:

select Step
from ..
where Union_Code = 990 AND (SetID = 'SFMTA' or 'COMMN');  
上述查询不返回任何行,解决方案是表达式:

select Step  
from ...  
where Union_code = 990 and (SetID = 'SFMTA' or SetID = 'COMMN')

我正在使用SQL Lite,无法理解OR语句的表达式的原因。

下面是SQL标准的正确方法

select Step  
from ...  
where Union_code = 990 and SetID in ('SFMTA', 'COMMN');
OR子句仅在使用满足以下任一情况的不同列集进行筛选时使用,或者是期望条件为左操作数和右操作数的布尔运算符:

< condition 1 > OR < condition 2>
您需要使用一个条件作为正确的操作数,以使代码实现所需的功能—正如您所发现的:

SetID = 'SFMTA' or SetID = 'COMMN'
请注意,这用运算符IN表示更简单,它检查左操作数是否等于右操作数列表中给定的任何值:

SetID in ('SFMTA', 'COMMN')
SetID in ('SFMTA', 'COMMN')