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