我正在过滤器搜索,我可以组成一个查询,但其AND部分没有返回我正确的值,其返回正确的结果为GPA,但它没有给出正确的结果程度检查因为它返回所有记录不适用“BSCS”在这里过滤器是查询代码:SQL查询返回错误的值
SELECT *
FROM education
WHERE gpa >= 2.10
OR gpa =0
AND degree = 'BSCS'
OR degree = NULL
我正在过滤器搜索,我可以组成一个查询,但其AND部分没有返回我正确的值,其返回正确的结果为GPA,但它没有给出正确的结果程度检查因为它返回所有记录不适用“BSCS”在这里过滤器是查询代码:SQL查询返回错误的值
SELECT *
FROM education
WHERE gpa >= 2.10
OR gpa =0
AND degree = 'BSCS'
OR degree = NULL
它看起来像你需要添加一些括号:
SELECT *
FROM education
WHERE (gpa >= 2.10 OR gpa =0)
AND (degree = 'BSCS' OR degree is NULL)
如果你想在WHERE
扩大条款,那么你可以使用:
SELECT *
FROM education
WHERE
(
(gpa >= 2.10 OR gpa =0)
AND (degree = 'BSCS' OR degree is NULL)
)
OR
(
(gpa is null or gpa ='')
or (degree is null or degree = '')
)
非常感谢:) – 2013-03-11 18:08:55
我该如何修改我的查询它的用户不适用全球通/国家级过滤器和SQL应该返回所有记录? – 2013-03-11 18:12:52
确定,但请帮助我这个问题以及 – 2013-03-11 18:15:47
试试下面的代码:
使用和/或条件时,为了避免混淆始终把括号。 也是最好的方式来检查,如果一个字段为空为WHERE myField IS NULL
SELECT *
FROM education
WHERE (gpa >= 2.10 OR gpa =0)
AND (degree = 'BSCS' OR degree is NULL)
@Junaid阿赫塔尔如果您对解决方案感到满意,请接受/投票。我的回答并不重复,但有人更新了代码....哈哈 – 2013-03-11 18:17:41
@Juhana没得到你的观点? – 2013-03-11 18:07:47
您的查询要求gpa> = 2.10或零gpa BSCS学位或没有学位。所以只要gpa> = 2.10,你的查询并不关心度数。 – 2013-03-11 18:10:41
我如何修改我的查询它的用户不适用GPA或度过滤器和SQL应该返回所有记录? – 2013-03-11 18:13:39