gpt4 book ai didi

mysql - SQL查询返回重复项

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

我有执行,每个执行都有几个图像和视频,例如,

表执行

 id |    name
1 execution1

表格图片

id |   executionId | image
1 1 'path'
2 1 'path2'

桌面音频

id |   executionId | audio
1 1 'path3'

我想要一个获取所有执行的查询,每个执行都有它们的所有图像,例如,

  { executions: [
{ id: 1,
name: execution1,
images: 'path+path2',
audio: 'path3'
},
{...}
]
}

我有这个问题:

 query = 
"select a.id, group_concat(image.image SEPARATOR '+'), group_concat(audio.audio SEPARATOR '+')
from execution a
left join image on image.executionId = a.id
left join audio on audio.executionId = a.id
group by a.id";

但返回

  { executions: [
{ id: 1,
name: execution1,
images: 'path+path2',
audio: 'path3+path3'
},
{...}
]
}

为什么?

最佳答案

您在聚合的数据中存在 1-N(或者可能是 N-M)关系。如果 audio 中有一条记录,但 image 中有两条记录(或相反),您将在 GROUP_CONCAT(audio . ..)

解决方案是使用 DISTINCT 来避免 GROUP_CONCAT 中的重复数据:

select 
a.id,
group_concat(DISTINCT image.image SEPARATOR '+'),
group_concat(DISTINCT audio.audio SEPARATOR '+')
from execution a
left join image on image.executionId = a.id
left join audio on audio.executionId = a.id
group by a.id

关于mysql - SQL查询返回重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54714404/

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