这是我的SQL语句
SELECT * FROM schedule
WHERE teacher_id = '$teacher_id'
AND event_id <> '$event_id'
AND seconds_start = '$start_time'
OR (seconds_start < '$start_time' AND seconds_end > '$start_time')
OR (seconds_start < '$end_time' AND seconds_end >= '$end_time')
如您所见,我想排除任何具有特定 ID 的结果,但这似乎不起作用,因为...
这不应该像预期的那样表现吗?
最佳答案
你显然不明白Operator Precedence
您很少可以在同一指令中混合使用 AND
和 OR
运算符,而无需使用括号指定它们的范围。
在括号后正确缩进您的代码也有助于理解您的查询:
SELECT * FROM schedule
WHERE teacher_id = '$teacher_id'
AND event_id <> '$event_id'
AND (
seconds_start = '$start_time'
OR (seconds_start < '$start_time' AND seconds_end > '$start_time')
OR (seconds_start < '$end_time' AND seconds_end >= '$end_time')
)
关于php - MySql 排除具有特定 ID 的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39407742/