mysql - 为什么 SELECT 结果重复 4 次?

标签 mysql sql

我有这些表:

Table 1

Table 2

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

相关文章:

mysql - 同一张表三次连接查询

MySQL - 获取给定列值列表的最新记录

sql - 防止行在 GROUP BY 中重复计算

mysql - 在 MySQL 中加载 CSV 文件或多个 INSERT 命令哪个更快?

php - 从变量 HTML 表单插入 sql 表

mysql - SQL 连接单个表的多行+按另一个表过滤

phpMyAdmin 旧版本 (2.6.1) 编码

java - 未在PreparedStatement上设置java.sqlite setObject

java - 向Mysql数据库中插入数据

php - MySql 仅限制连接表中的第一个表