sql group_concat 和子查询
Posted
技术标签:
【中文标题】sql group_concat 和子查询【英文标题】:sql group_concat and subquery 【发布时间】:2013-10-19 03:39:31 【问题描述】:我有 2 个 mysql 表:
car_model:
id (int) (Primary Key)
title (varchar)
id_brand (int) FK to car_brand table
car__car_model: - relation many to many
id_model (int)
id_advice_model (int)
car__car_model中有如下数据:
(id_model) (id_advice_model)
12 12
12 45
12 67
12 78
13 13
13 12
13 67
13 105
我想像这样获取这些数据:
12 12,45,67,78
13 13.12.67,105
我像这样使用 group_concat 和 group by:
SELECT ccm.id_model,group_concat(ccm.id_advice_model) FROM car__car_model as ccm group by ccm.id_model
问题: 如果 ids - 例如对于 12、45、67、78,如何从 car_model 表中获取此字符串的标题。我想在 1 个查询中完成 - 自定义我的查询
更新: 现在我还有一个问题: 我还有一张桌子:
car_brand:
id (int) (PK)
title (varchar)
在我的 car_model 表中有一个字段 id_brand
问题 2: 我如何从 car_model 中获取标题形式 car_brand - 像这样 - 福特福克斯、菲亚特 Linea 等等 - 现在我(在你的帮助下)只从 car_model 中获取标题 现在我有:12 - Focus,Linea
更新: 我使用 -
解决了这个问题SELECT
id_model,group_concat(concat(cb.title,' ',cm.title))
FROM
car__car_model as ccm
inner join car_model cm on (cm.id = ccm.id_advice_model)
inner join car_brand cb on (cb.id=cm.id_brand)
group by ccm.id_model
【问题讨论】:
【参考方案1】:SELECT ccm.id_model,
group_concat(cm.title)
FROM car__car_model as ccm
inner join car_model cm on cm.id = ccm.id_advice_model
group by ccm.id_model
您可以通过在要替换的 ID 上加入 car_model
表来将 ID 替换为实际标题。
【讨论】:
从一开始就不相似 ;)【参考方案2】:试试这个::
SELECT
ccm.id_model,group_concat(cm.tile, SEPARATOR ',')
FROM
car__car_model as ccm
inner join car_model cm on (cm.id = ccm.id_advice_model)
group by ccm.id_model
【讨论】:
以上是关于sql group_concat 和子查询的主要内容,如果未能解决你的问题,请参考以下文章
如何在sql server中使用group_concat进行查询[重复]