SELECT Count(*)
FROM stu_empl_pers
WHERE site_id = 'DEXLER';
返回22条记录。
但是
SELECT Count(*)
FROM stu_empl_pers a
WHERE a.status = 'A'
OR a.faculty = 1
OR a.staff = 1
AND a.site_id = 'DEXLER';
返回691条记录。它也考虑了不同的site_id。有人可以详细说明吗?
答案 0 :(得分:2)
WHERE a.status='A' or a.faculty=1 OR a.staff=1 AND a.site_Id = 'DEXLER';
(true/false or true/false or (true/false and true/false))
也许这会更容易看出你的WHERE
陈述意味着什么
如果OR
之一(AND
除外)变为真,则记录将被添加到结果中
认为AND
喜欢数学中的乘法运算数,它优先于OR
,在数学中可以被认为是sum
操作数
2 * 2-1 = 3不是2
答案 1 :(得分:1)
那是因为过滤条件不同。 OR
将返回所有符合过滤条件的记录。
也许您在第二个查询中寻找的是;
SELECT Count(*)
FROM stu_empl_pers a
WHERE ( a.status = 'A'
OR a.faculty = 1
OR a.staff = 1 )
AND a.site_id = 'DEXLER'; <-- missing brackets
您要在第一个查询中添加二级过滤器(a.status='A' OR a.faculty=1 OR a.staff=1)
。
答案 2 :(得分:1)
那么,你能尝试一下吗?我需要status = A和site_id ='dexler'是强制性的
Select count(*) from stu_empl_pers a
WHERE (a.faculty=1 OR a.staff=1)
AND a.status='A' AND a.site_Id = 'DEXLER';