我有这些表:
当我尝试在它们之间进行选择时,获得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/