sql 自身连接
来源:百度知道 编辑:UC知道 时间:2024/05/18 07:13:17
求年龄大于王波的学员姓名?
表格如下:
学生
--------------------------
学号 | 姓名 | 性别 | 年龄
--------------------------
9901 | 陈平 | 男 | 19
--------------------------
9902 | 王波 | 男 | 20
--------------------------
9903 | 张莉 | 女 | 21
-----------------------------------
教程示例代码是:
Select s1.姓名,s1.年龄,s1.性别 from 学生 s1, 学生 s2 where s1.姓名='王波' and s1.年龄<s2.年龄
但是显示结果是:
| 姓名 | 年龄 | 性别
-------------------------
1 | 王波 | 20 | 男
--------------------------------------------------------------
请问该怎么修改?
是不是因为 “Select s1.姓名,s1.年龄,s1.性别” 选择的是 s1 的,“where s1.姓名='王波' ”这里就直接选定了?如果是这样“and s1.年龄<s2.年龄”这里为什么不报错呢?
谢谢!
表格如下:
学生
--------------------------
学号 | 姓名 | 性别 | 年龄
--------------------------
9901 | 陈平 | 男 | 19
--------------------------
9902 | 王波 | 男 | 20
--------------------------
9903 | 张莉 | 女 | 21
-----------------------------------
教程示例代码是:
Select s1.姓名,s1.年龄,s1.性别 from 学生 s1, 学生 s2 where s1.姓名='王波' and s1.年龄<s2.年龄
但是显示结果是:
| 姓名 | 年龄 | 性别
-------------------------
1 | 王波 | 20 | 男
--------------------------------------------------------------
请问该怎么修改?
是不是因为 “Select s1.姓名,s1.年龄,s1.性别” 选择的是 s1 的,“where s1.姓名='王波' ”这里就直接选定了?如果是这样“and s1.年龄<s2.年龄”这里为什么不报错呢?
谢谢!
Select s1.姓名,s1.年龄,s1.性别
from 学生 s1, 学生 s2
where s2.姓名='王波' and s1.年龄>s2.年龄
用连接的方式这样写就对了
----------
补充一下:
二楼典型瞎写的根本不可能有结果的
select * from 学生 where 年龄 > (select top 1 年龄 from 学生 where 姓名 ='王波')
Select s1.姓名,s1.年龄,s1.性别 from 学生 s1, 学生 s2 where s1.学号=s2.学号 and s1.姓名='王波' and s1.年龄<s2.年龄
select * from 学生 where 年龄>(select 年龄 from 学生 where 姓名='王波')