首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >第1行的列'SubordinateID‘的数据被截断

第1行的列'SubordinateID‘的数据被截断
EN

Stack Overflow用户
提问于 2020-12-03 00:14:33
回答 2查看 30关注 0票数 0

我有一个表Employees和一个表Manages。在我的表管理中,我有ManagerID和SubordinateID,它们一起形成一个主键。ManagerID en SubordinateID都是引用EmployeeID的外键。我如何编写代码来实现经理管理的所有员工ID。

例如,员工ID为1的经理1管理EmployeeID为2、4、5和13的员工。

代码语言:javascript
复制
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');

怎么了?我得到了以下错误:

代码语言:javascript
复制
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')
EN

回答 2

Stack Overflow用户

发布于 2020-12-03 00:34:55

我认为这是因为逗号是sql中的一个特殊字符,我希望您可以对其进行转义。但最好的方法是改变你的员工和经理之间的关系。在这里,我将根据您的需要描述一些情况:

I) OneToMany

如果您的员工只由一个经理管理,那么您可以创建一个OneToMany关系。因此,每个员工都有一个manager_id字段,该字段是与经理相关的外键。

II)递归OneToMany

如果您没有任何Managers表,则Employees会引用其自身

III) ManyToMany

如果您的员工可以由一个或多个经理管理,则应该实现ManyToMany关系。您需要第三个表,并且需要在其中使用2个外部键(一个用于经理,一个用于员工)存储经理/员工的每个组合。

IV)递归ManyToMany

如果您只有一个Employees表,只需创建两个引用同一表的外键字段即可。毕竟,经理也是雇员。

票数 0
EN

Stack Overflow用户

发布于 2020-12-03 00:53:01

Manages看起来像是一个表,每个经理和下属占一行。

您需要单独插入每一行。因此,不是:

代码语言:javascript
复制
INSERT INTO `Manages` (`ManagerID`, `SubordinateID`)
    VALUES ('1', '2,4,5,13');

您将使用:

代码语言:javascript
复制
INSERT INTO `Manages` (`ManagerID`, `SubordinateID`)
    VALUES (1, 2), (1, 4), (1, 5), (1, 13);

此外,不要对数字常量使用单引号。它们指示该值是一个字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65111922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档