当前位置:Gxlcms > 数据库问题 > SQL之子查询

SQL之子查询

时间:2021-07-01 10:21:17 帮助过:20人阅读

ClassName from MyClass where ClassId=1 select StudentName,Gender,(select ClassName from MyClass where ClassId=1) from Student where ClassId=1

我们使用第一行代码作为列值,现在代码为正确的写法,但会有其他两种出错的写法。

i.

select StudentName,Gender,(select ClassName from MyClass) from Student where ClassId=1

由于没有写限定条件,子查询将返回一列多行多个值,会有如下报错:

技术分享

j.

select StudentName,Gender,(select * from MyClass) from Student where ClassId=1

由于*代表了一行多列值,会有以下报错:

技术分享

  c.子查询作为结果集

i.

使用子查询结果集实现分页:

select top 3 *from Student--第一页
select top 3*from Student where StudentId not in(select top 3 StudentId from Student)--第二页

在这里我们先选择了第一页,一共三条数据,然后使用第一页的结果集作为第二页的查询条件,得出第二页不在这三条结果范围外的前三条结果。

j.

我们还可以使用ROW_NUMBER来实现分页效果,此函数为数据集提供一个连续的编号,我们用这些编号来实现分页。

select *,ROW_NUMBER()over(order by studentid) as id from Student
select *from(select *,ROW_NUMBER()over(order by studentid) as id from Student) as temp where id>0 and id<=5
select *from(select *,ROW_NUMBER()over(order by studentid) as id from Student) as temp where id>5 and id<=10

 

SQL之子查询

标签:and   概念   函数   查询语句   ssid   code   -1016   编号   sel   

人气教程排行