我正在尝试使用'= ALL'
使用参数和子查询的一组结果,如下所示:
SELECT table.something
FROM Table t
WHERE t.param = ALL (... sub-query...)
这可能吗?因为我知道结果应该是什么,而且我根本没有得到任何结果......
答案 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