首页 > 解决方案 > 我对 SQL 中的 Order By 有疑问

问题描述

当我尝试从两个表中检索数据时遇到此问题。

部门表

在此处输入图像描述

电磁脉冲表

在此处输入图像描述

我想使用这个查询

SELECT EMP.ENAME, DEPT.LOC, EMP.SAL
FROM EMP, DEPT
order by DEPT.DEPTNO;

但它正在使用表 DEPT 中的所有位置创建数据

数据

在此处输入图像描述

标签: mysqlsqloracle-apex

解决方案


基本上,您的查询正在执行一个CROSS JOIN创建两个表的所有可能组合的操作。由于DEPT表有 4 行,EMP表有 11 行,因此最终结果将创建总共 44 行。

相反,你应该这样做

SELECT 
    e.ENAME, 
    d.LOC, 
    e.SAL
FROM EMP e
JOIN DEPT d
on e.DEPTNO = d.DEPTNO
order by d.DEPTNO;

推荐阅读