我试图从数据库中选择非常具体的数据,但我的查询似乎不起作用。这个查询是否正确?
SELECT *
FROM matches
WHERE compo_id = '1'
AND match_id < '5'
AND clan_user_id_1 = '0'
OR clan_user_id_2 = '0'
所以我想选择clan_user_id_1或clan_user_id_2等于零的所有匹配。
答案 0 :(得分:5)
用括号括起来,这有用吗?
SELECT * FROM matches WHERE compo_id = '1'
AND match_id < '5'
AND (clan_user_id_1 = '0' OR clan_user_id_2 = '0')
答案 1 :(得分:2)
SELECT
*
FROM
matches
WHERE
compo_id = 1
AND
match_id < 5
AND
(
clan_user_id_1 = 0
OR
clan_user_id_2 = 0
)
此外,除非你真的需要一切,否则通常最好不要 SELECT * 。明确定义您需要选择的字段。
答案 2 :(得分:2)
试试这个
SELECT * FROM matches WHERE compo_id = '1' AND match_id < '5' AND (clan_user_id_1 = '0' OR clan_user_id_2 = '0')
答案 3 :(得分:1)
当混合使用AND和OR子句时,你必须指定括号以明确说明你想要的内容。
你有
A and B and C or D
可以通过各种方式解释:
A and B and (C or D)
或
(A and B and C) or D