非常基础的问题请教!
表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 三班