如果想要在内连接上将得到ALL 怎么写?

如果想要在内连接上将得到ALL 怎么写?

# 查询比FORD和MARTIN底薪都高的员工信息
SELECT e.ename, e.sal, t.sal
FROM t_emp e JOIN (SELECT sal FROM t_emp WHERE ename IN("FORD", "MARTIN")) t
ON e.sal >= t.sal AND e.ename NOT IN("FORD", "MARTIN");

老师,我想要得到比FORD和MARTIN工资都要的员工信息 

 e.sal >= ALL(t.sal) 但是这样的语法是错误的,那我应该怎么写呢?

正在回答 回答被采纳积分+1

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

1回答
好帮手慕美 2022-09-18 15:17:45

同学,你好!all是对于子查询返回的列中的所有值进行比较,后边对应的是子查询。直接使用子查询就可以

select ename ,sal from t_emp
where sal>all(SELECT sal FROM t_emp WHERE ename IN("FORD", "MARTIN"));

祝学习愉快!

  • 提问者 慕的地8261015 #1

    我知道放在子查询的方式,课程里有说,我指的意思是转换成内连接的话,应该怎么写呢?因为不是说子查询效率太低,不推荐使用吗?

    2022-09-18 16:47:19
  • 好帮手慕美 回复 提问者 慕的地8261015 #2

    同学,你好!可以找出FORD和MARTIN中底薪较高的记录后再做表连接

    SELECT ename
    FROM t_emp e1
    JOIN (SELECT MAX(sal) AS sal FROM t_emp WHERE ename IN ("FORD","MARTIN")) e2
    ON e1.sal>=e2.sal
    WHERE e1.ename NOT IN ("FORD","MARTIN");

    祝学习愉快!

    2022-09-18 17:11:56
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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