求年龄大于王波的学员姓名?
表格如下:
教程示例代码是:
Select s1.姓名,s1.年龄,s1.性别 from 学生 s1, 学生 s2 where s1.姓名='王波' and s1.年龄<s2.年龄
但是显示结果是:
1 | 王波 | 20 | 男
修改为
Select s1.姓名,s1.年龄,s1.性别 from 学生 s1, 学生 s2 where s2.姓名='王波' and s1.年龄>s2.年龄
能够显示正确结果,这是什么原因?求解释!!!
你的第一句sql:Select s1.姓名,s1.年龄,s1.性别 from 学生 s1, 学生 s2 where s1.姓名='王波' and s1.年龄 至于你的第二句sql:Select s1.姓名,s1.年龄,s1.性别 from 学生 s1, 学生 s2 where s2.姓名='王波' and s1.年龄>s2.年龄 是正确的
你主要的问题是两张表你没搞清楚 拿哪张表里面的'王波',如果你拿的是第一张表里面的'王波'作比较,那么你比较的就是第二张表,那么你查询的字段应该为第二张表中的字段,所以这也就是你第一句sql的问题。你的第二句sql 相当于前面一段话反过来,也就是拿第二张表中的'王波'作比较,查的是第一张表中符合条件的字段,所以select 后面应该是第一张表s1.字段
from 学生 s1, 学生 s2?你的写法有问题吧
s1.姓名='王波' and s1.年龄s2.年龄 表示: ?>20 貌似都应该是张莉 21
因为你的第一个例子取的是s1的数据,取s2的数据就对了
我觉得用子查询写好理解点
select s2.* from 学生 s2 where s2.age > (select s1.age from 学生 s1 where s1.姓名 = '王波')
如果是s1.*显示的就是 姓名 = '王波' 这条数据
select 学号 ,姓名 ,性别 , 年龄 from 学生 where 年龄 > ( select 年龄 from 学生 where 姓名 = ‘王波’ )
Select s1.姓名,s1.年龄,s1.性别 from 学生 s1, 学生 s2 where s1.姓名='王波' and s1.年龄<s2.年龄
这条取的是s1的值,而s1.姓名='王波'限制了取这条记录的相关数据,要正确的话换为
Select s2.姓名,s2.年龄,s2.性别 from 学生 s1, 学生 s2 where s1.姓名='王波' and s1.年龄<s2.年龄