我正在尝试运行以下SQL语句
SELECT
P.team_id,
P.id,
M.id,
P.`end`,
UHT.user_id
FROM phase P
INNER JOIN module M
ON P.Module_id = M.id
JOIN user_has_team UHT
ON UHT.team_id = P.team_id
WHERE
M.module_type = 7 OR
M.module_type = 8 AND
P.end < NOW();
此结果返回180行。如果我走到这些行的底部,我得到一个看起来像这样的结果:
'52', '130', '275', '2014-12-16 00:00:00', '49'
这只是众多中的一个。
首先我想&#34;嘿,也许服务器时间无效&#34;
但是当我运行SELECT NOW()
时,我得到以下结果:
'2014-11-02 19:38:49'
那么问题是什么呢?
答案 0 :(得分:1)
由于SQL中的运算符优先级,您需要更多的括号。
尝试从
更改WHERE子句WHERE M.module_type = 7 or M.module_type = 8 AND P.end < NOW();
到
WHERE (M.module_type = 7 or M.module_type = 8) AND P.end < NOW();
答案 1 :(得分:0)
查看运算符优先级,您的查询被解释为:
WHERE (M.module_type = 7)
or
((M.module_type = 8)
AND P.end < NOW());
但你需要
WHERE (M.module_type = 7 or M.module_type = 8) AND P.end < NOW();