Sql自连接问题

发布时间:2024-05-22 23:49 发布:上海旅游网

问题描述:

假设我现在有一个学生表student 包含字段s_id,s_name,s_sex,s_age.
下面为自连接查询代码①:
select a.s_name,a.s_sex,b.s_age from
student a,student b
where a.s_id=b.s_id
等同上面的代码的代码如下②:
select s_name,s_sex,s_age from student

问题是
用②中的代码更加简洁,效果也一样,为什么还要用①那种写法——即自连接的作用!?高手请用心回答,谢谢!
①中查询的是一张表等同于:
select a.s_name,a.s_sex,b.s_age
from student as a,student as b
where a.s_id=b.s_id

SELECT TOP 10 * FROM student a WHERE Not Exists
(Select * From (Select Top 9 * From student order by s_id) as b Where b.s_id=a.s_id)
Order by s_id 这个回答的大大能不能再把答案补充些,就是用于筛选外还有啥子功能么?百度不到!!谢谢了

问题解答:

第2种效率会高些。。
第1种代码在这里用意义不大,自连接一般是用来判断并筛选单一表中的一些数据的时候用的,比如想取某表中的10~20的数据的时候可以用到自连接,
SELECT TOP 10 * FROM student a WHERE Not Exists
(Select * From (Select Top 9 * From student order by s_id) b Where b.s_id=a.s_id)
Order by s_id

呵呵,这个是多表链接吧?!
如果没有where语句的话,你怎么取出a表,b表中的关联项呢?
其他方法也行,你可以建立一个视图或者临时表,里面是已经链接好的a+b表数据!

第一个可对多张表进行查询的,第二个只能对一张表里的进行查询。你用的是一张表吧!

热点新闻