这样写查询出来的结果为什么不对

这样写查询出来的结果为什么不对

select e.empno,e.ename,e.sal,s.grade
from t_emp e
left join t_salgrade s on e.sal in(s.hisal,s.losal);

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,1、IN 运算符用来判断表达式的值是否位于给出的列表中;如果是,返回值为 1,否则返回值为 0。

2、同学sql语句是查询t_emp 表sal字段等于t_salgrade 表hisal或losal字段值的数据。是可以查询出数据来的。只不过使用的是左查询,以t_emp 表为主表,会将t_emp 表中的数据全部展示。

3、同学是想查询什么,同学可以具体描述一下,便于老师定位问题。

祝学习愉快!

  • 可莉我女儿 提问者 #1

    on后面是连接的条件,我是想连接工资等级表,根据底薪分级,老师用的是sal between local and hisal,在逻辑上是底薪在..之间,但为什么使用sal in(losal,hisal)就不行,结果不一样

    2021-09-15 18:35:04
  • 好帮手慕小尤 回复 提问者 可莉我女儿 #2

    同学你好,1、BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。语法为:BETWEEN....AND...  

    2、IN 运算符用于 WHERE 表达式中,以列表项的形式支持多个选择。语法为:in (value1,value2,value3,…) ,如下所示:

    #查询user表uid等于2,3,5的数据
    SELECT * FROM user WHERE uid IN (2,3,5)

    3、综上所述,BETWEEN....AND...  是查询区间,而in查询的具体是in中的内容。所以同学通过in关键字,无法查询出区间的内容。

    ​祝学习愉快!

    2021-09-16 10:08:36
  • 可莉我女儿 提问者 回复 好帮手慕小尤 #3

    原来是这样,谢谢老师

    2021-09-16 16:50:13
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师