我有这些表:





当我尝试在它们之间进行选择时,获得APELLIDO列:

SELECT APELLIDO FROM EMP, DEPT WHERE (EMP.DEPT_NO = 30);


它显示正确的信息,但是重复了4次!!!
为什么会这样呢?是不是这样另一个事实是,如果我用这句话

SELECT APELLIDO FROM EMP WHERE DEPT_NO IN (SELECT DEPT_NO FROM DEPT WHERE DEPT_NO = 30);


它可以正确显示,但是为什么其他命令可以做到这一点呢?谢谢。

最佳答案

切勿在FROM子句中使用逗号。始终使用正确的,明确的标准JOIN语法:。

但是,根据您的情况,甚至不需要JOIN。所有信息都在EMP中:

SELECT EMP.APELLIDO
FROM EMP
WHERE EMP.DEPT_NO = 30;


,运算符执行CROSS JOIN-完整的笛卡尔积。对于这两个表,没有理由这样做。

关于mysql - 为什么SELECT结果重复4次?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59115910/

10-13 02:10