日期:2014-05-19  浏览次数:20559 次

非常基础的问题请教!
表tb的结构如下所示:
id             class
1               一班
2               二班
3               一班
4               二班
5               三班
               
select   (select   min(id)   from   tb     where   class=A.class)
from   tb   as   A


其中不明白上面语句where条件后的 'class=A.class '是什么意思?
能具体给个事例讲解一下吗?谢谢啦!

------解决方案--------------------
select (select min(id) from tb where class=A.class)
from tb as A

这个语句本身不就是个例子嘛
这个语句查询的是所有班级中,每个班id号最小的纪录

from tb as A
这句话给了表tb一个别名A,也就是说这个时候可以看作
from A
其中A表是跟tb完全相同的表

select (select min(id) from tb where class=A.class)
from A

这样看会不会容易理解一些呢?
------解决方案--------------------
好像是这个意思
那个class=A.class

class A.class
一班 --- 一班 1
一班 3

二班 --- 二班 2
二班 4

三班 --- 三班 5
------解决方案--------------------
这样看你可能会明白些


create table tb
(
[id] int,
class varchar(10)
)

insert into tb
select 1, '一班 ' union all
select 2 , '二班 ' union all
select 3 , '一班 ' union all
select 4 , '二班 ' union all
select 5 , '三班 '

select * from tb

--看一下各班级对应的最小id
select min(id) as 最小id,class from tb group by class


select (select min(id) as 最小id from tb where class=A.class group by class) as 最小id,class
from tb as A

------解决方案--------------------
class=A.class等于下面这个:
1 一班 1 一班
1 一班 3 一班
2 二班 2 二班
2 二班 4 二班
3 一班 1 一班
3 一班 3 一班
4 二班 2 二班
4 二班 4 二班
5 三班 5 三班