Использование SQL IN И вместе - PullRequest
1 голос
/ 02 марта 2012

Есть ли способ использовать IN и AND вместе?Проблема в том, что я хочу сопоставить свой запрос нескольким значениям, используя один столбец.

SELECT * FROM product INNER JOIN values USING(product_id) WHERE value = "large" AND value = "short"

Проблема в том, что я не могу использовать предложение IN, поскольку оно определяет как ИЛИ между значениями.

Ответы [ 3 ]

7 голосов
/ 02 марта 2012

Попробуйте:

select product_id
from values
where value in ('large','short')
group by product_id
having count(distinct value) = 2
2 голосов
/ 02 марта 2012

Нет, это невозможно, потому что это не имеет никакого смысла.

Поле не может быть равно двум разным значениям одновременно. Выражение x = y and x = z всегда будет ложным, если y и z имеют разные значения.

(Исключением могут быть некоторые текстовые значения, которые можно считать равными в некоторых культурах, например the и thé, но сравнение в этом случае все равно не имеет смысла.)

0 голосов
/ 02 марта 2012

Нет. операторы IN и AND различаются, если вы используете свои запросы следующим образом.

Этот SQL не имеет никакого смысла. Я просто пытаюсь сравнить неправильный с правильным. SELECT * FROM значений ВНУТРЕННЕГО СОЕДИНЕНИЯ ИСПОЛЬЗОВАНИЯ (product_id) WHERE value = "large" И value = "short"

SELECT * FROM product INNER JOIN values USING(product_id) WHERE value IN ("large","short");
...