子查询的三种使用方式:
1,子查询作为条件
1》如果是跟在> < >= <= = != <>后面就必须保证子查询 只返回单个值,如果是返回多行一列,那么就需要使用in来指定范围,如果是返回一行多列,那么就报错
Eg:(多行一列)
Select * from Student where ClassId in (select ClassId from grade)
2,子查询作为结果集(可以将from后面的表用虚拟结果集进行替换)
//根据主键StudentNo排序,Row_NUMBER()会生成行号,over()指定排序字段
Select *,Row_NUMBER() over(order by StudentNo) from Student
Eg://虚拟结果集需要设置别名(temp) 生成的行号也要指定别名(as id)
Select * from (select *,Row_NUMBER() over(order by StudentNo) as id from Student) temp where id>0 and id<=5//分页
3,子查询作为列的值
Select (select studentname from Studnet where
Student.StudentNo=Result.StudentNo),StudentResult from Result
时间: 2024-10-25 04:38:47