gpt4 book ai didi

MySQL 结果来自一个表加上来自另一个表的单个数据字符串

转载 作者:行者123 更新时间:2023-11-29 00:18:26 26 4
gpt4 key购买 nike

我有一张表格列出了人们,另一张表格列出了他们吃过的食物。我希望运行一个单一的查询,为我提供所有人,并在每个人旁边提供一个以逗号分隔的字符串,表示他们吃过的食物:

例如

name    gender  age personID
dave male 30 1
tom male 40 2
chloe female 20 3

食物

food    personID
fish 1
chips 1
salad 1
tomato 2
fish 3
pizza 3

为此给我:

name    gender  age personID    food
dave male 30 1 fish,chips,salad
tom male 40 2 tomato
chloe female 20 3 fish,pizza

我猜是这样的:

select people.*, (select concat(food,',') from food where food.personID=people.personID) food from people

最佳答案

您将需要一个 JOIN 以及 MySQL 的 GROUP_CONCAT()聚合函数,其目的正是逗号分隔列表的预期结果,按 SELECT 列表中的所有其他列分组。

请注意,我在这里使用了LEFT JOIN,因此无论他或她是否在food 中有任何相关记录,都会返回此人的详细信息。

SELECT
name,
gender,
age,
p.personID,
GROUP_CONCAT(food) AS foods
FROM
people p
LEFT JOIN food f ON p.personId = f.personID
GROUP BY
name,
gender,
age,
p.personID

这是一个演示:http://sqlfiddle.com/#!2/13aab/3

关于MySQL 结果来自一个表加上来自另一个表的单个数据字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21993667/

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