SQL查询中Any All 可互换吗
2个回答
2013-01-10
展开全部
ANY 与 ALL , 处理机制不同的
ANY 意味着。 只要有一行满足条件, 就可以了。
而 ALL 意味着。 必须要每一行都满足条件。
下面是一个对比的例子:
公用测试表
CREATE TABLE test_all_any_some1(
data_value INT
);
CREATE TABLE test_all_any_some2(
data_value INT
);
INSERT INTO test_all_any_some1
SELECT 1 UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 4 UNION ALL
SELECT 5;
INSERT INTO test_all_any_some2
SELECT 1 UNION ALL
SELECT 3 UNION ALL
SELECT 5 UNION ALL
SELECT 7;
-- 检索测试表2
-- 要求数据,必须大于测试表1中的所有数据
SELECT
*
FROM
test_all_any_some2
WHERE
data_value >
ALL (SELECT data_value FROM test_all_any_some1);
data_value
7
(1 行受影响)
-- 检索测试表2
-- 要求数据,只要大于测试表1中的任何一个数据就可以了.
SELECT
*
FROM
test_all_any_some2
WHERE
data_value >
ANY (SELECT data_value FROM test_all_any_some1);
data_value
3
5
7(3 行受影响)
ANY 意味着。 只要有一行满足条件, 就可以了。
而 ALL 意味着。 必须要每一行都满足条件。
下面是一个对比的例子:
公用测试表
CREATE TABLE test_all_any_some1(
data_value INT
);
CREATE TABLE test_all_any_some2(
data_value INT
);
INSERT INTO test_all_any_some1
SELECT 1 UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 4 UNION ALL
SELECT 5;
INSERT INTO test_all_any_some2
SELECT 1 UNION ALL
SELECT 3 UNION ALL
SELECT 5 UNION ALL
SELECT 7;
-- 检索测试表2
-- 要求数据,必须大于测试表1中的所有数据
SELECT
*
FROM
test_all_any_some2
WHERE
data_value >
ALL (SELECT data_value FROM test_all_any_some1);
data_value
7
(1 行受影响)
-- 检索测试表2
-- 要求数据,只要大于测试表1中的任何一个数据就可以了.
SELECT
*
FROM
test_all_any_some2
WHERE
data_value >
ANY (SELECT data_value FROM test_all_any_some1);
data_value
3
5
7(3 行受影响)
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询