Android AND和OR函数在一个查询中不起作用?sqlite
我使用WHERE运行一个查询 “计算机教室\u SLOT1=0或计算机教室\u SLOT2=0和计算机教室\u DONE=1” 虽然它返回所有符合要求的行。这是表行数据 根据列表示,以下是行的值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
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运算的周围,在另一个例子中放在“=”比较的周围,但在另外两个“=”比较的周围没有。请原谅我的无知,先生,但我不确定我是否理解。