gpt4 book ai didi

mysql - 如何合并两个表并对一个表的结果进行分组?

转载 作者:行者123 更新时间:2023-11-29 10:33:48 25 4
gpt4 key购买 nike

我想合并两个表。

列表:

| id   | day         | 
|:-----|------------:|
| 1 | monday |
| | |
| | |
|:-----|------------:|
| 2 | tuesday |
| | |

动物:

| id   | animal      | list_id    |
|:-----|------------:|:----------:|
| 1 | cat | 1 |
|:-----|------------:|:----------:|
| 2 | bird | 1 |
|:-----|------------:|:----------:|
| 3 | monkey | 1 |
|:-----|------------:|:----------:|
| 4 | frog | 2 |
|:-----|------------:|:----------:|
| 5 | dog | 2 |
|:-----|------------:|:----------:|

这是我的方法:

$animals = $db->query('SELECT *,
GROUP_CONCAT(animals.animal SEPARATOR " <br> ") AS animals
FROM list
LEFT JOIN animals ON list.id=animals.list_id
')->fetchAll(PDO::FETCH_ASSOC);

这是我想要的结果:

| id   | day         | animal       |
|:-----|------------:|:------------:|
| 1 | monday | cat |
| | | bird |
| | | monkey |
|:-----|------------:|:------------:|
| 2 | tuesday | frog
| | | dog

但我实际得到的结果是:

| id   | day         | animal       |
|:-----|------------:|:------------:|
| 1 | monday | cat |
| | | bird |
| | | monkey |
| | | frog
| | | dog

最佳答案

您想要合并具有相同 list_id 的所有动物,因此您需要将 Group bylist_id 结合使用。 Group_concat() 将连接每个组的所有结果。因此,以下查询应该有效:

$animals = $db->query('SELECT l.*,
GROUP_CONCAT(animals.animal SEPARATOR " <br> ") AS animals
FROM list l
LEFT JOIN animals ON list.id=animals.list_id
group by animals.list_id // Added statement
')->fetchAll(PDO::FETCH_ASSOC);

希望对你有帮助!

关于mysql - 如何合并两个表并对一个表的结果进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46891952/

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