Android AND和OR函数在一个查询中不起作用?sqlite

Android AND和OR函数在一个查询中不起作用?sqlite,android,sql,sqlite,select,Android,Sql,Sqlite,Select,我使用WHERE运行一个查询 “计算机教室\u SLOT1=0或计算机教室\u SLOT2=0和计算机教室\u DONE=1” 虽然它返回所有符合要求的行。这是表行数据 根据列表示,以下是行的值 ROW 1 = 0 0 0 ROW 2 = 1 0

我使用WHERE运行一个查询

“计算机教室\u SLOT1=0或计算机教室\u SLOT2=0和计算机教室\u DONE=1”

虽然它返回所有符合要求的行。这是表行数据

根据列表示,以下是行的值

ROW 1 =                0                       0                          0    
ROW 2 =                1                       0                          0   
ROW 3 =                1                       2                          1   
ROW 4 =                1                       3                          0   
ROW 5 =                1                       4                          1   
ROW 6 =                0                       5                          1   
ROW 7 =                0                       0                          1   
他们都回来了……为什么?如果我用AND更改OR,它将跟随查询,返回第7行。。。这很奇怪。我需要在一个查询中使用OR and,因为我的目标是在SLot1或Slot2中返回一个至少为0的行,并且应该是DONE=1

WHERE (COMPUTERCLASSROOM_SLOT1 = 0 OR COMPUTERCLASSROOM_SLOT2 = 0) AND 
       COMPUTERCLASSROOM_DONE = 1
应该是

WHERE (COMPUTERCLASSROOM_SLOT1 = 0 OR COMPUTERCLASSROOM_SLOT2 = 0) AND 
       COMPUTERCLASSROOM_DONE = 1

正如@Jack已经指出的,问题在于您没有使用括号。因此,您的查询在逻辑上的计算结果与您所期望的不同

试试@JW.的代码片段,它会非常有效

WHERE (COMPUTERCLASSROOM_SLOT1 = 0 OR COMPUTERCLASSROOM_SLOT2 = 0) AND (COMPUTERCLASSROOM_DONE = 1) 

正如@Jack已经指出的,问题在于您没有使用括号。因此,您的查询在逻辑上的计算结果与您所期望的不同

试试@JW.的代码片段,它会非常有效

WHERE (COMPUTERCLASSROOM_SLOT1 = 0 OR COMPUTERCLASSROOM_SLOT2 = 0) AND (COMPUTERCLASSROOM_DONE = 1) 
根本原因

并作为乘法计算;或作为加法进行计算。因此,根据算术优先规则(PEMDAS),并在计算或之前进行计算

Example: 1 OR 0 is 1 + 0 = 1; 1 AND 0 is 1 * 0 = 0;
所以

使用括号可以避免混淆,并使代码更具可读性。

根本原因

并作为乘法计算;或作为加法进行计算。因此,根据算术优先规则(PEMDAS),并在计算或之前进行计算

Example: 1 OR 0 is 1 + 0 = 1; 1 AND 0 is 1 * 0 = 0;
所以


使用括号可以避免混淆,并使代码更具可读性。

括号。使用它们。它们不疼。我保证。括号。使用它们。它们不疼。我保证。哇,愚蠢的我,忽略了这一点,我认为在sql中这样做是可以的。谢谢,愚蠢的我,忽略了这一点,我认为在sql中这样做是可以的。谢谢你的父母缺乏逻辑。在一个例子中,你把它们放在OR运算的周围,在另一个例子中放在“=”比较的周围,但在另外两个“=”比较的周围没有。请原谅我的无知,先生,但我不确定我是否理解。你缺乏逻辑。在一个例子中,你把它们放在OR运算的周围,在另一个例子中放在“=”比较的周围,但在另外两个“=”比较的周围没有。请原谅我的无知,先生,但我不确定我是否理解。