Используя "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
.
Я знаю, что это не способ написать это, но я не знаю правильного пути.
Ответы
Ответ 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