如果我运行 SELECT 查询并返回其中包含冗余信息的行,我该如何在一行中显示该信息?
目前我的查询是这样的:
SELECT email, first_name, group FROM membership
返回的结果集如下:
------------------------------------
| email | first_name | group |
------------------------------------
| bob@co.uk | bob | g1 |
| jim@co.uk | jim | g1 |
| jim@co.uk | jim | g2 |
| jane@co.uk | henry | g2 |
------------------------------------
相反,我需要结果集如下所示:
--------------------------------------------
| email | first_name | group | group |
--------------------------------------------
| bob@co.uk | bob | g1 | |
| jim@co.uk | jim | g1 | g2 |
| jane@co.uk | henry | g2 | |
--------------------------------------------
重要的是,列名称“group”尽管是多余的,但不能以不同的方式命名。
编辑:为清楚起见,组数可能会发生变化。 edit2:我在初始查询中使用的完整代码是:
SELECT
persons.mail AS email,
persons.fname AS 'first_name',
persons.lname AS 'last_name',
groups.name as add_list
FROM group_membership
LEFT JOIN groups ON group_membership.gid = groups.gid
LEFT JOIN persons ON group_membership.uid = persons.uid
WHERE persons.mail != ""
ORDER BY last_name
最佳答案
你要求的是不可能的。如果有四行的值为:
| jim@co.uk | jim | g2 |
您是否希望结果有 4 个名为 group
的列,而不是您当前显示的 group
的两列?
你可能想要的是:
select email, first_name, group_concat(`group`) group by email, first_name
关于mysql - 如何根据返回的行选择多列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58261255/