如何解决GROUP BY 并将列值放入单行列中
我在想是否可以获取使用 GROUP BY 房间的所有值。例如,我有一个名为 subject 、 room 和 class 的表
表格主题
subject_id | subject_name
-------------------
1 | math
2 | science
3 | english
桌子房间
room_id | room_name
-------------------
1 | sunflower
2 | cornflower
3 | redflower
桌子教室
id | room_id | subject_id
-------------------
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3
现在查询。不确定我使用的查询是正确的还是足够的查询..但输出的查询显示不期望
SELECT * FROM classroom
LEFT JOIN subject ON classroom.subject_id = subject.subject_id
LEFT JOIN room ON classroom.room_id = room.room_id
GROUP BY room_name
现在我想要这样的输出
教室
room_name | subject_name
------------------------
sunflower | math
| science
| english
它应该按向日葵分组为一行
解决方法
GROUP BY
旨在减少行数并为这些行启用聚合。在您的情况下,没有 group by
产生以下查询:
SELECT room_name,subject_name
FROM classroom
LEFT JOIN subject ON classroom.subject_id = subject.subject_id
LEFT JOIN room ON classroom.room_id = room.room_id
+-----------+--------------+
| room_name | subject_name |
+-----------+--------------+
| sunflower | english |
| sunflower | math |
| sunflower | science |
+-----------+--------------+
所以使用 GROUP BY
没有多大意义,但如果我们这样做,结果如下:
SELECT room_name,subject_name
FROM classroom
LEFT JOIN subject ON classroom.subject_id = subject.subject_id
LEFT JOIN room ON classroom.room_id = room.room_id
GROUP BY room_name,subject_name
+-----------+--------------+
| room_name | subject_name |
+-----------+--------------+
| sunflower | english |
| sunflower | math |
| sunflower | science |
+-----------+--------------+
请注意,每行的两列中都显示了值。这既是预期的,也是我们所希望的。
GROUP BY
是不是一个“展示”工具,它会抑制第一列中的值的输出,这是“报告工具”或“展示层”所期望的处理。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。