我可以在SQL查询中使用'= ALL'吗?

时间:2011-11-28 17:09:20

标签: mysql sql

我正在尝试使用'= ALL'使用参数和子查询的一组结果,如下所示:

SELECT table.something
FROM Table t
WHERE t.param = ALL (... sub-query...)
这可能吗?因为我知道结果应该是什么,而且我根本没有得到任何结果......

3 个答案:

答案 0 :(得分:4)

是的,有可能:

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

如果您没有得到预期的结果,我猜测查询存在问题。它当前编写的方式,子查询中的所有结果必须与t.param的值相匹配(这在上下文中并没有很多意义)。

答案 1 :(得分:3)

仅在子查询返回单个值时才有意义。

如果子查询返回多个值,则不会获得任何匹配的行。没有值可以同时等于另外两个值。

如果子查询例如返回1和2,并且您的表包含值2,则它将不匹配,因为值2不等于1和2。

因此,将ALL关键字与=运算符一起使用实际上是没用的。我认为您希望使用ANY关键字或IN运算符。

答案 2 :(得分:-1)

这是使用的一般形式,我没有听说过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