gpt4 book ai didi

mysql - 了解自连接

转载 作者:可可西里 更新时间:2023-11-01 07:58:54 27 4
gpt4 key购买 nike

我正在练习自连接,这是我在编写查询时不理解的地方。

我有一张表'employee'

员工表包含三个记录。

+-----+---------------+------------+
| id | employee | manager_id |
+-----+---------------+------------+
| 1 | Ola | NULL |
| 2 | Ahmed | 1 |
| 3 | Tove | 1 |
+----------+----------+------------+

最后一列 manager_id 是指使 Ahmed 和 Tove 成为 Ola 经理的第一列 ID。

如果我这样写查询

SELECT emp.employee as NAME, manager.employee as MANAGER
FROM employee as emp, employee as manager
WHERE emp.id = manager.manager_id

结果成就了 Ahmed 和 Tove 经理。鉴于

SELECT emp.employee as NAME, manager.employee as MANAGER
FROM employee as emp, employee as manager
WHERE manager.id = emp.manager_id

做对了,谁能解释一下?

最佳答案

自连接类似于内部连接,其中同一表的两个或多个实例通过通用数据类型列/字段连接在一起。这种连接(内部连接)根据连接条件给出公共(public)行作为结果。

员工表包含三个记录。在这种情况下,

员工作为emp:

+-----+---------------+------------+
| id | employee | manager_id |
+-----+---------------+------------+
| 1 | Ola | NULL |
| 2 | Ahmed | 1 |
| 3 | Tove | 1 |
+----------+----------+------------+

员工作为经理:

+-----+---------------+------------+
| id | employee | manager_id |
+-----+---------------+------------+
| 1 | Ola | NULL |
| 2 | Ahmed | 1 |
| 3 | Tove | 1 |
+----------+----------+------------+

现在第一个案例:让我们试试这个来理解区别:

SELECT emp.*, manager.*FROM 员工为 emp,员工为经理WHERE emp.id = manager.manager_id

+-----+---------------+------------+-----+---------------+------------+
| id | employee | manager_id | id | employee | manager_id |
+-----+---------------+------------+-----+---------------+------------+
| 1 | Ola | NULL | 2 | Ahmed | 1 |
| 1 | Ola | NULL | 3 | Tove | 1 |
+----------+----------+------------+----------+----------+------------+

参见,emp.id = manager.manager_id。因此,作为 NAME 的 emp.employee 给出了第一个表中的 Ola 行,而作为 MANAGER 的 employee 给出了第二个表中的 Ahmed & Tove 行。

现在第二种情况:让我们试试这个来理解区别:

SELECT emp.*, manager.*FROM 员工为 emp,员工为经理WHERE manager.id = emp.manager_id

+-----+---------------+------------+-----+---------------+------------+
| id | employee | manager_id | id | employee | manager_id |
+-----+---------------+------------+-----+---------------+------------+
| 2 | Ahmed | 1 | 1 | Ola | NULL |
| 3 | Tove | 1 | 1 | Ola | NULL |
+----------+----------+------------+----------+----------+------------+

参见,manager.id = emp.manager_id。因此,作为 NAME 的 emp.employee 给出了第一个表中的 Ahmed 和 Tove 行,而 manager.employee 作为 MANAGER 给出了第二个表中的 Ola 行。

关于mysql - 了解自连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22274129/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com