mysql - mysql中的一条记录自引用

标签 mysql

我在 mySql 中有一个自引用表,一个包含经理和员工的表。

CREATE TABLE `employee` (
    `employee_id` BIGINT(10) NOT NULL AUTO_INCREMENT,
    `firstname` VARCHAR(50) NULL DEFAULT NULL,
    `lastname` VARCHAR(50) NULL DEFAULT NULL,
    `manager_id` BIGINT(20) NULL DEFAULT NULL,
    PRIMARY KEY (`employee_id`),
CONSTRAINT `FK_MANAGER` FOREIGN KEY (`manager_id`) REFERENCES `employee` (`employee_id`)
)

我想知道记录引用自己在概念上是否正确。我解释得更好:有些员工与某些经理有关系,例如员工 3、5、7 与经理 1 有关系,但我想创建一个列表来显示与经理 1 和经理 1 相关的所有记录。所以我试过让manager 1和自己有关系,所以manager 1指的是manager 1。

我没有发现任何错误,但想知道这是否是实现这种关系的正确方法,或者我将来是否会遇到问题。

谢谢

最佳答案

在我看来这不是最佳解决方案,因为:

  • 它限制你在管理层次结构中只有 2 个级别(只有经理和员工)你不能有经理 -> 领导 -> 员工
  • 你不能轻易地打印出员工树
  • 我在大公司工作,唯一没有高层的人就是 CEO

我自己会改用这个查询

SELECT * FROM employee WHERE employee_id=1
UNION
SELECT * FROM employee WHERE manager_id=1

关于mysql - mysql中的一条记录自引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18626035/

相关文章:

mysql - 在复杂的 MySQL 查询中需要帮助

php - Codeigniter:如何在 JOIN 查询中包含 SUM() 和 COUNT()?

mysql - 使用 SQL 查询两个日期之间的数据?

Python Mysql 查询缓存并在稍后使用它进行连接

mysql - 为什么一张被骗的 table 只有一半大?

mysql - 使用Cron将数据从mysql数据库导出到CSV,然后将所有数据获取到bigquery表

mysql - 需要在mysql中通过operator "-"拆分参数

javascript - 在 PHP 的 while 循环中更新多个日期列

php - 比较 mysql/symfony2 中的日期

mysql - 遍历记录并将其存储到数组中