sql - 显示引用名称而不是同一表中的 ID

标签 sql

我有一个名为 employee 的表,其中有一个主键列 ID 和一个名为 supervisorID 的列,它是对引用一个人的同一个表的引用。我想将 supervisorID 显示为其引用的人名而不是 ID。

我想从表 employee 中选择 * 但引用 SupervisorID 作为同一个表中的人名。

最佳答案

SELECT e.ID, e.name AS Employee, s.name AS Supervisor 
FROM employee e 
  INNER JOIN employee s 
  ON s.ID = e.supervisorID 
ORDER BY e.ID;

这里有更多关于如何测试这个的颜色:

mysql> CREATE TABLE employee (ID INT NOT NULL AUTO_INCREMENT, supervisorID INT NOT NULL DEFAULT '1', name VARCHAR(48) NOT NULL, PRIMARY KEY (ID));
Query OK, 0 rows affected (0.01 sec)


mysql> INSERT INTO employee VALUES (1, 1, "The Boss"), (2,1, "Some Manager"), (3,2, "Some Worker"), (4,2, "Another Worker");
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0


mysql> SELECT e.ID, e.name AS Employee, s.name AS Supervisor
FROM employee e INNER JOIN employee s
ON s.ID = e.supervisorID ORDER BY e.ID;
+----+----------------+--------------+
| ID | Employee       | Supervisor   |
+----+----------------+--------------+
|  1 | The Boss       | The Boss     |
|  2 | Some Manager   | The Boss     |
|  3 | Some Worker    | Some Manager |
|  4 | Another Worker | Some Manager |
+----+----------------+--------------+
4 rows in set (0.01 sec)

mysql> 

关于sql - 显示引用名称而不是同一表中的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11507783/

相关文章:

mysql - MYSQL语言中字段级别的比较

sql - 从 SQL Server 2012 导出到 PostgreSQL 的问题

mysql - 使用 SQL join 仅选择最新版本的数据

mysql - 使用 SQL 根据特定寄存器获取前 10 项

MySQL - 获取行号后选择和加入

mysql - 如何检查当前行是否是sql查询中最后选择的行?

php - 从 2 个不同的表中减去值,然后将结果插入到另一个表中

其他提交的 PHP MySQL 日志

java - Java(或任何其他语言)中的 SQL 注入(inject)指南

c# - 外键引用在分配 Null 时已具有值异常 Linq to SQL