GROUP BY 并将列值放入单行列
GROUP BY and get the columns values into single row column
我在考虑是否可以获取使用 GROUP BY 房间的所有值。例如,我有一个 table 命名为 subject 、 room 和 classroom
table 主题
subject_id | subject_name
-------------------
1 | math
2 | science
3 | english
table房间
room_id | room_name
-------------------
1 | sunflower
2 | cornflower
3 | redflower
table 教室
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
旨在减少行数并为这些行启用聚合。在您的情况下,以下查询 without 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
不是 一种“演示”工具,它会抑制第一列中值的输出,这是一种“报告工具”或“演示”层”将有望处理。
我在考虑是否可以获取使用 GROUP BY 房间的所有值。例如,我有一个 table 命名为 subject 、 room 和 classroom
table 主题
subject_id | subject_name
-------------------
1 | math
2 | science
3 | english
table房间
room_id | room_name
-------------------
1 | sunflower
2 | cornflower
3 | redflower
table 教室
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
旨在减少行数并为这些行启用聚合。在您的情况下,以下查询 without 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
不是 一种“演示”工具,它会抑制第一列中值的输出,这是一种“报告工具”或“演示”层”将有望处理。