SELECT *
FROM workshop_planning_history
WHERE STATUS =1
OR STATUS =2
AND start_date =2015 -11 -29
OR end_date <=2016 -01 -10
OR end_date >=2016 -01 -10
我正在运行上面的查询,我期待来自Workshop_planning_history的值,其状态为1或2,但我得到状态为3的结果以及状态为1&amp;的行。 2。 我的查询有什么问题请帮忙......
答案 0 :(得分:1)
您必须在谓词中添加一些括号,因为运算符的优先级为NOT AND OR
,因此您的查询被解释为:
SELECT *
FROM workshop_planning_history
WHERE STATUS = 1
OR (STATUS = 2 AND start_date = '2015-11-29')
OR end_date <= '2016-01-10'
OR end_date >= '2016-01-10'
更改为:
SELECT *
FROM workshop_planning_history
WHERE (STATUS = 1 OR STATUS = 2)
AND (start_date = '2015-11-29'
OR end_date <= '2016-01-10'
OR end_date >= '2016-01-10')
根据你的逻辑,或者适当的东西。
答案 1 :(得分:0)
正确的方法是使用in
的{{1}}子句。
文档:Here
status
如果同时使用SELECT *
FROM workshop_planning_history
WHERE STATUS in (1,2)
AND start_date =2015 -11 -29
和&amp; <=
运营商?
答案 2 :(得分:0)
你需要在状态和日期比较的状态和日期之间添加肠胃切除术,在比较日期时最好使用日期修饰符
>=