我已经开始使用sql并且已经听说过很多关于ANY
和ALL
运算符的内容.有人可以向我解释他们使用的查询类型以及它们的工作方式吗?
Ada*_*son 33
的ANY
和ALL
运营商允许执行单柱值和范围内的其他值之间的比较.例如:
select * from Table1 t1 where t1.Col1 < ANY(select value from Table2)
Run Code Online (Sandbox Code Playgroud)
ANY
表示如果该范围内的任何值的操作为真,则满足条件.ALL
表示仅当该范围内的所有值的操作都为真时才满足条件.
要使用可能更贴近家庭的示例,请执行以下操作:
select * from Table1 t1 where t1.Col1 = ANY(select value from Table2)
Run Code Online (Sandbox Code Playgroud)
这样做是一样的:
select * from Table1 t1 where t1.Col1 in (select value from Table2)
Run Code Online (Sandbox Code Playgroud)
我已经听说了很多关于
ANY
和ALL
运算符
我感到有些惊讶:我很少看到他们用过我自己。WHERE val IN (subquery)
和更为常见WHERE EXISTS (subquery)
。
借用@Adam Robinson的示例:
SELECT *
FROM Table1 AS t1
WHERE t1.Col1 < ANY (
SELECT value
FROM Table2
);
Run Code Online (Sandbox Code Playgroud)
我通常会看到这样写:
SELECT *
FROM Table1 AS t1
WHERE EXISTS (
SELECT *
FROM Table2 AS t2
WHERE t1.Col1 < t2.value
);
Run Code Online (Sandbox Code Playgroud)
我发现此构造更易于阅读,因为谓词(t1.Col1
和t2.value
)的参数更靠近在一起。
归档时间: |
|
查看次数: |
38234 次 |
最近记录: |