WHERE b.Cid IN (
SELECT Cid FROM SC WHERE Sid = 01
) OR c.Cid IN (
SELECT Cid FROM SC WHERE Sid = 01
) OR d.Cid IN (
SELECT Cid FROM SC WHERE Sid = 01
)
AND
(b.score < 60 AND c.score < 60) OR
(c.score < 60 AND d.score < 60) OR
(b.score < 60 AND d.score < 60)
在下面的SQL 查询语句,WHERE 子句中的条件不会生效的原因是因为 AND 优先于 OR 运算符。需要使用括号来明确优先级。后来通过GPT检查问题,建议可以尝试这样修改 WHERE 子句中的逻辑条件,以确保条件可以按照预期的方式进行组合:
-- 在AND关键字前后分别添加(),括号内执行完了才会走AND
WHERE (
b.Cid IN (
SELECT Cid FROM SC WHERE Sid = 01
) OR c.Cid IN (
SELECT Cid FROM SC WHERE Sid = 01
) OR d.Cid IN (
SELECT Cid FROM SC WHERE Sid = 01
)
)
AND
(
(b.score < 60 AND c.score < 60) OR
(c.score < 60 AND d.score < 60) OR
(b.score < 60 AND d.score < 60)
)
在这个修改后的语句中,我们使用括号将 OR 条件进行了分组,以确保它们在 AND 条件之后执行。这样就能保证条件按照预期的方式进行组合。