YC3354 2017-01-03 07:56 采纳率: 62.5%
浏览 897
已采纳

【新人求解答】sql 自身连接问题

求年龄大于王波的学员姓名?
表格如下:

学生

学号 | 姓名 | 性别 | 年龄

9901 | 陈平 | 男 | 19

9902 | 王波 | 男 | 20

9903 | 张莉 | 女 | 21

教程示例代码是:

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.年龄

能够显示正确结果,这是什么原因?求解释!!!

  • 写回答

7条回答 默认 最新

  • 强化脑细胞 2017-01-03 09:23
    关注

    你的第一句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.字段

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 Ubuntu20.04无法连接GitHub
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥30 C++行情软件的tick数据如何高效的合成K线