我有一个MySQL查询,我想要获取一个值,让我们说m
可以是'x','y'或'z'以及另外两个需要精确值的变量。我不知道怎么写这个。
我不知道你是否明白这个想法,但这就是我所拥有的:
SELECT * FROM respuestas
WHERE id_curso = '155' OR id_curso = '156' OR id_curso= '157' OR id_curso= '158'
AND id_pregunta='1' AND respuesta>=0
所以我需要id_curso
为155
或156
或157
或158
,同时id_pregunta
= {{ 1}}和1
> respuesta
。
我知道这不是写它的方式,但我不知道正确的方法。
答案 0 :(得分:29)
试试这个:
WHERE
id_curso IN('155', '156', '157', '158') AND
id_pregunta = '1' AND
respuesta >= 0
或者,如果您更喜欢冗长的方式,请使用括号:
WHERE
(id_curso = '155' OR
id_curso = '156' OR
id_curso = '157' OR
id_curso = '158') AND
id_pregunta = '1' AND
respuesta >= 0
如果id_curso是一个整数(由于你使用了引号,它似乎不是你的查询,但无论如何都是这样),你甚至可以使用BETWEEN关键字来选择一系列值:
WHERE
(id_curso BETWEEN 155 AND 158) AND
id_pregunta = '1' AND
respuesta >= 0
答案 1 :(得分:8)
您需要对OR
语句进行分组,以便它们形成一个条件:
SELECT * FROM respuestas WHERE (id_curso= '155' OR id_curso= '156' OR id_curso= '157' OR id_curso= '158') AND id_pregunta='1' AND respuesta>=0
答案 2 :(得分:3)
AND的优先级高于OR,您需要使用括号:
SELECT * FROM respuestas WHERE (id_curso= '155' OR id_curso= '156' OR id_curso= '157' OR id_curso= '158') AND id_pregunta='1' AND respuesta>=0
答案 3 :(得分:2)
你应该使用IN Operator
SELECT * FROM respuestas WHERE id_curso IN (155, 156, 157, 158) AND id_pregunta='1' AND respuesta>=0
答案 4 :(得分:2)
尝试分组
SELECT * FROM respuestas WHERE (id_curso= '155' OR id_curso= '156' OR id_curso= '157' OR id_curso= '158') AND id_pregunta='1' AND respuesta>=0
答案 5 :(得分:2)
你可以试试这样的......
SELECT * FROM respuestas WHERE id_curso IN ('155','156','157','158') AND id_pregunta = '1' AND respuesta >= 0
如果你不想使用IN,你也可以这样做......
SELECT * FROM respuestas WHERE (id_curso = '155' OR id_curso = '156' OR id_curso = '157' OR id_curso = '158') AND id_pregunta = '1' AND respuesta >= 0
http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_in