我刚刚意识到我的措辞非常糟糕 我试图找出是否可以在插入语句中执行此操作,而不是在尝试输出数据时执行此操作
这可能听起来很令人困惑,但希望我能解释一下。
我有两个表,expertise
(父表)和department
(子表)
我拥有的专业知识:
exp_id int(2) primary key
exp_name varchar(30)
我所在的部门有:
dep_id int(2) primary key
dep_name varchar(30)
exp_id int(2) foreign key
我不希望部门行的结果如下所示:
dep_id dep_name exp_id
1 accounting 32
1 accounting 27
1 accounting 29
我希望它看起来像这样
dep_id dep_name exp_id
1 accounting 32, 27, 29
所以一行中有多行,如果这有意义的话。
我相信我必须使用它的串联,但我以前从未使用过它并且正在寻求一些帮助
我刚刚意识到我的措辞非常糟糕 我试图找出是否可以在插入语句中执行此操作,而不是在尝试输出数据时执行此操作
最佳答案
您应该能够使用group_concat
,即:
select dep_id, dep_name, group_concat(exp_id) exp_id
from department
group by dep_id, dep_name
您还应该考虑规范化您的部门表,由于 dep_id, dep_name
组重复,目前它违反了第一范式。 reference here
编辑
我看到您更新了您的问题,表示您希望将数据以这种方式存储在表中,而不是显示。
答案是:你真的不知道。
分隔字段几乎是不可能处理的,而且在 RDBMS 中都是可怕的。如果您绝对必须采用这种方式,则可以使用上述查询来创建 View ,并至少以适当的标准化方式存储真实数据。
重申一下。请不要这样做。小猫会死。
关于mysql - 如何连接外键中的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30633967/