CREATE TABLE [A] ([name] [varchar](20),[age] [int],[num] [int])
INSERT INTO [A]
SELECT N'Jack',18,1 UNION ALL
SELECT N'Jack',18,2 UNION ALL
SELECT N'Mike',22,3 UNION ALL
SELECT N'Jack',18,4 UNION ALL
SELECT N'Jack',18,5 UNION ALL
SELECT N'Grace',14,6 UNION ALL
SELECT N'Mike',22,7
Select * from A B where exists(select * from A where name=B.name and num<B.num)这条语句帮我讲解一下好吗?
我肯能理解进入了歧途,我认为查询出来的应该是
Jack 18 1
Jack 18 2
Mike 22 3
Jack 18 4
,而查询出来结果是
Jack 18 2
Jack 18 4
Jack 18 5
Mike 22 7
这是为什么呢?我不能理解,为什么最小的反而被取消了呢?
Select A.*
from A B
INNER JOIN A name = B.name
where num < B.num
实际上是自连接
实际就是两张一样的表num大小的比较,为何将最小的反而取消了呢
Jack 18 2
Jack 18 4
Jack 18 5
Mike 22 7可是我理解的那句查询语句,我认为的结果是
Jack 18 1
Jack 18 2
Mike 22 3
Jack 18 4
也就是说我理解的错误,我想那位告诉我下我是那里错误的
自然就搜索不出这条记录的内容了!
本人新手所以分数不多,只好给这2位朋友分数。