Могу ли я использовать '= ALL' в SQL Query? - PullRequest
2 голосов
/ 28 ноября 2011

Я пытаюсь использовать '= ALL', используя параметр и набор результатов из подзапроса, например:

SELECT table.something
FROM Table t
WHERE t.param = ALL (... sub-query...)

возможно ли это?потому что я знаю, каким должен быть результат, и я не получаю никаких результатов ...

Ответы [ 3 ]

4 голосов
/ 28 ноября 2011

Да, это возможно:

http://dev.mysql.com/doc/refman/5.0/en/all-subqueries.html

Если вы не получили ожидаемых результатов, я полагаю, что проблема связана с запросом. Как написано в данный момент, все результаты в подзапросе должны соответствовать значению t.param (что не имеет большого смысла вне контекста).

3 голосов
/ 28 ноября 2011

Это имеет смысл, только если подзапрос возвращает только одно значение.

Если подзапрос возвращает более одного значения, вы не получите подходящих строк.Нет значения, которое может быть равно двум другим значениям одновременно.

Если подзапрос, например, возвращает 1 и 2, а ваша таблица содержит значение 2, он не будет совпадать, поскольку значение 2 не равнок 1 и 2.

Таким образом, использование ключевого слова ALL с оператором = на самом деле довольно бесполезно.Я думаю, что вы хотите использовать ключевое слово ANY или оператор IN.

0 голосов
/ 28 ноября 2011

Это общая форма, я не слышал о ALL:

SELECT table.something
FROM Table t
WHERE t.param IN (SELECT param FROM Table2 WHERE somecriteria='somevalue')

Для таблицы names этого:

ID | firstname 
---+----------
 1 | alice
 2 | bob
 3 | jane
 4 | sue

Запрос:

SELECT * FROM names WHERE firstname in ('alice', 'jane');

Вернет это:

ID | firstname 
---+----------
 1 | alice
 3 | jane
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...