SQL Self/Inner 从同一个 table 加入
SQL Self/Inner Join from same table
我正在努力为此 table(办公室)应用一个简单的 JOIN 命令:
+-----------+-------+------+
| Employee | Name | Boss |
+-----------+-------+------+
| 1 | Joe | 2 |
| 2 | Chris | 3 |
| 3 | Rob | 2 |
| 4 | Dean | 1 |
+-----------+-------+------+
我见过很多使用 2 table 的例子,我试图重现这些例子,这让我想到了:
SELECT office.Name
FROM office
INNER JOIN office
ON office.Employee = office.Boss;
我正在尝试将员工推荐给老板
但是这段代码给我:不唯一 table/alias:'office'
有什么简单的解决办法?也许根本不使用 JOIN..
您需要使用 table 别名,因为您在查询中有多个 table 同名。例如:
SELECT a.Name, b.Name
FROM office a
INNER JOIN office b
ON a.Employee = b.Boss;
在这种情况下,查询包括 table office
的两个“实例”。为确保您使用属于正确 table 的正确列,您需要为每个实例使用 table 别名;在这种情况下 a
和 b
.
您需要使用 AS
关键字(在 FROM
子句中)为每个 table 赋予自己不同的别名:
SELECT
employee.Name AS ThisPerson,
boss.Name AS HasThisBoss
FROM
office AS employee
INNER JOIN office AS boss ON
boss.Employee = employee.Boss;
仅供参考:SQL 中的 AS
关键字已过载,并且根据上下文具有非常不同的用途:
- 列别名:
SELECT foo.X AS bar FROM qux
- Table别名:
SELECT foo.X FROM qux AS foo
- 计算列:
ALTER TABLE foo ADD bar AS ( X + Y )
CAST
中的类型说明符:SELECT CAST( x AS int ) AS x2
我正在努力为此 table(办公室)应用一个简单的 JOIN 命令:
+-----------+-------+------+
| Employee | Name | Boss |
+-----------+-------+------+
| 1 | Joe | 2 |
| 2 | Chris | 3 |
| 3 | Rob | 2 |
| 4 | Dean | 1 |
+-----------+-------+------+
我见过很多使用 2 table 的例子,我试图重现这些例子,这让我想到了:
SELECT office.Name
FROM office
INNER JOIN office
ON office.Employee = office.Boss;
我正在尝试将员工推荐给老板
但是这段代码给我:不唯一 table/alias:'office' 有什么简单的解决办法?也许根本不使用 JOIN..
您需要使用 table 别名,因为您在查询中有多个 table 同名。例如:
SELECT a.Name, b.Name
FROM office a
INNER JOIN office b
ON a.Employee = b.Boss;
在这种情况下,查询包括 table office
的两个“实例”。为确保您使用属于正确 table 的正确列,您需要为每个实例使用 table 别名;在这种情况下 a
和 b
.
您需要使用 AS
关键字(在 FROM
子句中)为每个 table 赋予自己不同的别名:
SELECT
employee.Name AS ThisPerson,
boss.Name AS HasThisBoss
FROM
office AS employee
INNER JOIN office AS boss ON
boss.Employee = employee.Boss;
仅供参考:SQL 中的 AS
关键字已过载,并且根据上下文具有非常不同的用途:
- 列别名:
SELECT foo.X AS bar FROM qux
- Table别名:
SELECT foo.X FROM qux AS foo
- 计算列:
ALTER TABLE foo ADD bar AS ( X + Y )
CAST
中的类型说明符:SELECT CAST( x AS int ) AS x2