两句sql怎么都是结果空的?
来源:5-1 数据操作语言:子查询(一)
weixin_慕少5379513
2022-07-08 16:51:51
SELECT t1.ename,t1.sal,t2.avg FROM t_emp t1 JOIN( SELECT ename,AVG(sal) avg FROM t_emp) t2 ON t1.ename = t2.ename AND t1.sal>t2.avg; SELECT t1.empno,t1.sal,t2.avg FROM t_emp t1 JOIN( SELECT empno,AVG(sal) avg FROM t_emp) t2 ON t1.empno = t2.empno AND t1.sal>=t2.avg;
相关截图:
相关截图:
1回答
好帮手慕小蓝
2022-07-08
同学你好~
第一个语句:
这个语句中的t2表sql语句为:SELECT ename,AVG(sal) avg FROM t_emp;
这个语句的结果集如下图:
这里由于使用了聚合函数AVG,所以有一行数据。而sql中需要展示ename,所以只会取第一行数据的ename中的数据。
当这个结果集与t1表进行连接时,由于SMITH的薪资低于平均工资,此时t1.sal>t2.avg的条件不满足,那么就没有任何可以展示的数据了。
第二个语句:
此处出现的问题同上一个语句,t2表的结果集中只会展示编号7369的编号以及平均工资,而编号7369的员工工资低于平均工资,所以没有任何可以展示的数据。
建议同学在书写表连接语句前,先将子表的结果集进行查询检查,然后再与主表进行连接。
祝学习愉快~
相似问题