mysql - 如何连接外键中的信息?

标签 mysql sql concatenation

我刚刚意识到我的措辞非常糟糕 我试图找出是否可以在插入语句中执行此操作,而不是在尝试输出数据时执行此操作

这可能听起来很令人困惑,但希望我能解释一下。

我有两个表,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/

相关文章:

php - mysql插入查询出错

php - SQL 和日期比较

python - 在 python 中连接 .m3u8 中存在的文件

mysql - 查找计数中的最大值

java - MYSQLjava.sql.SQLException : No suitable driver

mysql - 如何在仍然使用索引的同时按 MySQL 中的日期/时间段对结果进行分组?

mysql - CONCAT_WS 三个字段在CREATE TABLE语句中创建PRIMARY KEY

python - Python 中的处理/提取

python - mysql python 上的更新总是返回 0 作为lastrowid

mysql - 如何获得从开始到结束的准确时间