以为我有一个如下所示的table1
table1
id product
2 chocolate
1 chocolate
2 pepsi
3 fanta
2 pepsi
4 chocolate
5 chips
3 pizza
1 coke
2 chips
6 burger
7 sprite
0 pepsi
并希望仅使用mysql
以下面显示的方式排列上表table2
id product
0 pepsi
1 chocolate, coke
2 chocolate,fanta,chips
3 fanta,pizza
4 chocolate
5 chips
6 burger
7 sprite
上述事情可以通过
来完成select id, group_concat(distinct product) as products
from table1
group by id
order by id
之后我希望table2中的product列在另一个名为table3的表中更新,如下所示,这里我想更新table2中的products列作为table3中的thing列和table3中的数字=来自table2的id
table3
number name things
0 hi null
1 hello null
2 hehe null
3 wow null
4 hi null
5 hi null
6 hi null
7 hi null
我希望最终输出如表2所示
table3
number name things
0 hi pepsi
1 hello chocolate, coke
2 hehe chocolate,fanta,chips
3 wow fanta,pizza
4 hi chocolate
5 hi chips
6 hi burger
7 hi sprite
答案 0 :(得分:1)
使用update from select
语法。 Check here了解更多信息
UPDATE table3
JOIN (SELECT id,
Group_concat(DISTINCT product) AS products
FROM table1
GROUP BY id) b
ON table3.number = b.id
SET table3.things = b.products
答案 1 :(得分:1)
您有一个很好的规范化数据结构,并且您想要开始使用以逗号分隔的列表。这是个坏主意。可行,但可能是一个坏主意。
您可以使用update
join
:
update table3 t3 join
(select id, group_concat(distinct product) as products
from table1
group by id
) tt
on t3.number = tt.id
set t3.things = tt.products;