使用“OR”和“AND”mysql php

时间:2011-04-15 14:42:25

标签: php mysql

我有一个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_curso155156157158,同时id_pregunta = {{ 1}}和1> respuesta

我知道这不是写它的方式,但我不知道正确的方法。

6 个答案:

答案 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