-1

在我的 mysql 数据库中,我有 2 个表“ brands ”和“ models

CREATE table brands (
id int(11),
brand_name varchar(20));

CREATE TABLE models (
id int(11),
idBrand int(11),
model_name varchar(20));

我想编写一个函数,让我可以像这样显示 requet 的结果:

Brand_name      model_name
brand_1         model_1_1, model_1_2, model_l_3
brand_2         model_2_1, model_2_2, model_2_3  
4

2 回答 2

2

您可以使用group_concat功能:

select b.id, max(brand_name), group_concat(model_name)
from brands b join models m
on b.id = m.idBrand
group by b.id;

或者如果你不想选择 id,这也是有效的:

select brand_name, group_concat(model_name)
from brands b join models m
on b.id = m.idBrand
group by brand_name;

这是一个演示

如果您想返回一整套,那么您可以创建过程:

CREATE procedure test_proc ()

BEGIN

 select brand_name, group_concat(model_name) model_name
 from brands b join models m
 on b.id = m.idBrand
 group by brand_name;

END

并这样称呼它:

call test_proc();

因为你可以在这里看到:https ://dev.mysql.com/doc/refman/8.0/en/create-function-udf.html函数不能返回这种数据......

于 2020-01-27T09:17:29.823 回答
1

您可以使用group_concat Mysql 函数获得所需的结果,如下所示:

Select br.brand_name, 
group_concat(mod.model_name SEPARATOR ',') AS model_name
from brands br join models mod
on br.id = mod.idBrand
group by br.brand_name; 

我希望这有帮助!

于 2020-01-27T10:09:31.307 回答