【发布时间】:2021-03-14 15:20:10
【问题描述】:
我有一张Employees 表和一张Manages 表。在我的表 Manages 中,我有 ManagerID 和 SubordinateID,它们共同构成一个主键。 ManagerID 和 SubordinateID 都是引用 EmployeeID 的外键。如何编写代码来实现经理管理的所有员工 ID。
例如,员工 ID 为 1 的经理 1 管理员工 ID 为 2、4、5 和 13 的员工。 我尝试按如下方式执行此操作
INSERT INTO `Manages` (`ManagerID`, `SubordinateID`) VALUES ('1', '2,4,5,13');
INSERT INTO `Manages` (`ManagerID`, `SubordinateID`) VALUES ('2', '6,10,5');
INSERT INTO `Manages` (`ManagerID`, `SubordinateID`) VALUES ('4', '10,5,7');
INSERT INTO `Manages` (`ManagerID`, `SubordinateID`) VALUES ('3', '7,8,9');
INSERT INTO `Manages` (`ManagerID`, `SubordinateID`) VALUES ('11', '12');
怎么了?我收到以下错误:
ERROR 1265: 1265: Data truncated for column 'SubordinateID' at row 1
SQL Statement:
INSERT INTO `group22`.`Manages` (`ManagerID`, `SubordinateID`) VALUES ('1', '2,4,5,13')
【问题讨论】:
-
永远不要将数据存储为逗号分隔的项目!只会给你带来很多麻烦。
-
但是应该如何正确存放呢?
-
每个 ManagerID/SubordinateID 组合一行。 IE。 (1,2), (1,4), (1,5), (1,13)