>ALL()和>MAX()的结果为什么不一样呢?

fanduisala 2010-03-19 07:55:04
SELECT name FROM bbc WHERE gdp > ALL(SELECT gdp FROM bbc WHERE region = 'Europe')


SELECT name FROM bbc WHERE gdp > (SELECT MAX(gdp) FROM bbc WHERE region = 'Europe')

这两条语句的结果为什么不一样啊?
谢谢
...全文
135 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanduisala 2010-03-20
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 feixianxxx 的回复:]

引用 10 楼 fanduisala 的回复:
空值有什么影响吗?

看4L
[/Quote]

谢谢
feixianxxx 2010-03-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 fanduisala 的回复:]
空值有什么影响吗?
[/Quote]
看4L
fanduisala 2010-03-19
  • 打赏
  • 举报
回复
空值有什么影响吗?
fanduisala 2010-03-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sql77 的回复:]

引用 5 楼 feixianxxx 的回复:
晕死你了LZ

这2个写法不一样的。。。。。。

小麦说得对,如果有NULL值,比较是不对的
[/Quote]

SELECT gdp, name FROM bbc WHERE region = 'Europe' AND gdp IS NULL

果然有空值


gdp name
Andorra
Azerbaijan
Latvia
Liechtenstein
Monaco
San Marino
Vatican
fanduisala 2010-03-19
  • 打赏
  • 举报
回复
请继续帮我解惑,刚学SQL呢,http://sqlzoo.net/这个网站好像不错。
如果你们还有其它可以推荐的资源也告诉我谢谢
SQL77 2010-03-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 feixianxxx 的回复:]
晕死你了LZ

这2个写法不一样的。。。。。。
[/Quote]
小麦说得对,如果有NULL值,比较是不对的
fanduisala 2010-03-19
  • 打赏
  • 举报
回复
不对啊,
http://sqlzoo.net/1a.htm
请看其中的问题
2a. Which countries have a GDP greater than any country in Europe? [Give the name only.]
feixianxxx 2010-03-19
  • 打赏
  • 举报
回复
晕死你了LZ

这2个写法不一样的。。。。。。
feixianxxx 2010-03-19
  • 打赏
  • 举报
回复
(SELECT gdp FROM bbc WHERE region = 'Europe'

这里是不是有空值...

create table test 
(
id int null ,
name varchar(10)
)
insert test
select 1,'1'union select
3,'3' union select
2,'sad' union select
null,'sad'

select name from test where id>all(select id from test where name='sad')
/*
name
----------

*/

select name from test where id>(select MAX(id)from test where name='sad')
/*
name
----------

3*/
--小F-- 2010-03-19
  • 打赏
  • 举报
回复
看看剪剪曾经写过这样的帖子
SQL中不常用的一些函数..
fanduisala 2010-03-19
  • 打赏
  • 举报
回复
对哦,谢谢,马虎了
SQL77 2010-03-19
  • 打赏
  • 举报
回复
DECLARE @TB TABLE(ID INT,NAME VARCHAR(10))
INSERT @TB
SELECT 1 ,'A' UNION ALL
SELECT 1 ,'B' UNION ALL
SELECT 2 ,'A' UNION ALL
SELECT 3 ,'C'

SELECT name FROM @TB WHERE ID > ALL(SELECT ID FROM @TB WHERE NAME = 'A')


SELECT name FROM @TB WHERE ID > (SELECT MAX(ID) FROM @TB WHERE NAME = 'A')

/*

(所影响的行数为 4 行)

name
----------
C

(所影响的行数为 1 行)

name
----------
C

(所影响的行数为 1 行)


ALL是大于里面所有值,等于>最大的呀

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧