Подтвердить что ты не робот

Используя "OR" и "AND" mysql php

У меня есть запрос 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 и respuesta > 0.

Я знаю, что это не способ написать это, но я не знаю правильного пути.

4b9b3361

Ответ 1

Попробуйте следующее:

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

Ответ 2

Вам нужно сгруппировать ваши операторы 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

И имеет более высокий приоритет, чем 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 

Ответ 4

вы должны использовать оператор IN

SELECT * FROM respuestas WHERE id_curso IN (155, 156, 157, 158) AND id_pregunta='1' AND respuesta>=0

Ответ 5

Попробуйте группировать

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

Ответ 6

Вы можете попробовать что-то вроде этого...

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