gpt4 book ai didi

CONCAT、GROUP_CONCAT 和 DISTINCT 的 MySQL 查询组合

转载 作者:行者123 更新时间:2023-11-29 20:32:49 24 4
gpt4 key购买 nike

我有这三个表及其关系。

people
people_id (int)
people_name (varchar)

comic
comic_id (int)
comic_name (varchar)

ref_author
comic_id (int)
people_writer_id (int)
people_illust_id (int)

ref_author 上的关系如下。

  • comic_id 指的是漫画的comic_id
  • people_writer_id 和people_illust_id 指的是人们的 people_id,如任何特定的people_id 上的人可能是作家、插画家,或两者兼而有之。
  • 当有两名作家和一名插画家的例子时,我会插入第一个作家和插画家的表格,然后是第二个作家和第一个插画家(用重复的内容填补空白)

使用此查询,

SELECT distinct SQL_CALC_FOUND_ROWS 
c.comic_name, concat (group_CONCAT(distinct pa.people_name separator ' / '), ', ', group_CONCAT(distinct pb.people_name separator ' / ')) as 'author'
FROM ref_author ra
inner join comic c on c.comic_id = ra.comic_id
inner join people pa on pa.people_id = ra.people_writer_id
inner join people pb on pb.people_id = ra.people_illust_id
group by c.comic_name

我可以显示这种结果。

comic_name         author
17+ Kharisma Jati, Kharisma Jati
1SR6 Muhammad Fathanatul Haq, Muhammad Fathanatul Haq
304th Study Room Felicia Huang, Felicia Huang
4HERO Arief Prasojo, Arief Prasojo
5 cm Donny Dhirgantoro, Is Yuniarto
....
Degalings Pandji Pragiwaksono, Pandji Pragiwaksono / Shani ...

这个查询的问题是,当一个人只引用一个职位时,作者列会很好地显示,但当一个人引用两个职位时,它会显示为重复项。我的目标是显示没有重复数据的数据。

comic_name         author
17+ Kharisma Jati
1SR6 Muhammad Fathanatul Haq
304th Study Room Felicia Huang
4HERO Arief Prasojo
5 cm Donny Dhirgantoro, Is Yuniarto
....
Degalings Pandji Pragiwaksono, Shani ...

我该怎么做?我在哪里修改查询,或者表中是否有任何缺陷?

最佳答案

根据我在您的数据中看到的情况,您从两个不同的位置获取作者值:ra.people_writer_idra.people_illust_id。由于在您的输出中,这些名称由逗号分隔,这意味着名称出现在两个字段中,因此 Kharisma Jati 既是作家又是插画家。

如果是这种情况,并且您不希望一个名字在同时担任作家和插画家时出现两次,则需要更改查询的这一部分:

concat (group_CONCAT(distinct pa.people_name separator ' / '), ', ', group_CONCAT(distinct pb.people_name separator ' / ')) as 'author'

并在两个字段之间使用不同的内容,您的输出将不会像现在这样。例如,您可以这样做

group_CONCAT(distinct pa.people_name,pb.people_name separator ' , ') as 'author'

这将避免名称重复。但是,这只会列出用逗号分隔的这两个值的组合之间的唯一名称,并且您不会看到作家和插画家之间的分隔。

关于CONCAT、GROUP_CONCAT 和 DISTINCT 的 MySQL 查询组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38948941/

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