gpt4 book ai didi

mysql 将插入的数据追加到列

转载 作者:行者123 更新时间:2023-11-30 01:06:52 25 4
gpt4 key购买 nike

我不确定这在 sql 中是否可能。

我有下表:

  • 包含列 ID 和作者的“文档”
  • “authors”包含 ID、姓名首字母和姓氏列
  • “authorships”包含 id、document_id 和author_id 列

文档可以有多个作者。

我需要文档表中的作者列包含作者表中的姓氏和首字母,并进行相应的格式化:

“博客,J. Doe,J. Punchclock,P. Botts,D。”等等...

例如:

文档

| id  | title             | authors |
-------------------------------------
| 1 | Arms and the Man | |
| 2 | East of Eden | |
| 3 | If Not Now, When? | |

作者

| id  | initial | lastname     |
--------------------------------
| 1 | J | Bloggs |
| 2 | J | Doe |
| 3 | P | Punchclock |
| 4 | D | Botts |

作者身份

| id  | document_id  | author_id |
----------------------------------
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
| 4 | 2 | 3 |
| 5 | 2 | 4 |
| 6 | 3 | 1 |
| 7 | 3 | 3 |
| 8 | 3 | 4 |

我需要将文档表中的作者列更新为:

| id  | title             | authors                             |
-----------------------------------------------------------------
| 1 | Arms and the Man | Bloggs, J. Doe, J. Punchclock, P. |
| 2 | East of Eden | Punchclock, P. Botts, D. |
| 3 | If Not Now, When? | Bloggs, J. Punchclock, P. Botts, D. |

如果可能的话,我需要一个 sql 语句才能执行此操作 - 将多个值附加到一列?

最佳答案

使用concat连接姓氏和首字母,然后 group_concat将多个结果放在一行上。

select d.id, d.title, 
group_concat(concat(a.lastname,', ', a.initial, '.')
order by a.lastname, a.initial separator ' ') authors
from documents d
inner join authorships ash on ash.document_id = d.id
inner join authors a on ash.author_id = a.id
group by d.id, d.title

sqlFiddle

关于mysql 将插入的数据追加到列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19688187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com