在一次选择中选择多个 ID
Posted
技术标签:
【中文标题】在一次选择中选择多个 ID【英文标题】:Selecting Multiple ID's in one Select 【发布时间】:2015-10-27 03:08:59 【问题描述】:我有一个数据库,其中的条目必须分组在一起
id | Name | Surname | Time
1 | Michael | Kane | 3
2 | Torben | Dane | 4
3 | Dinge | Chain | 5
4 | Django | Fain | 5
5 | Juliett | Bravo | 6
6 | Django | Fain | 7
7 | Django | Fain | 3
8 | Django | Fain | 4
9 | Dinge | Chain | 4
10 | Torben | Dane | 4
现在我想在维护所有 ID 的同时对项目进行分组。我即将完成以下查询,但我丢失了我的 ID
SELECT id, Name, Surname, sum(Time) from Names group by(Name)
查询的结果是
id | Name | Surname | Time
9 | Dinge | Chain | 9
8 | Django | Fain | 19
5 | Juliett | Bravo | 6
1 | Michael | Kane | 3
10 | Torben | Dane | 8
虽然我需要这样的所有 id
ids | Name | Surname | Time
3,9 | Dinge | Chain | 9
4,6,78 | Django | Fain | 19
5 | Juliett | Bravo | 6
1 | Michael | Kane | 3
2,10 | Torben | Dane | 8
我怎样才能做到这一点?
【问题讨论】:
你打算如何处理“ids”列? 我需要它们,因为我想更新它们。将带有 id 的行标记为已处理,例如 这让我很困惑。如果您以后需要它们进行处理,为什么要这样聚合它们?按“时间”查询行并处理它们。 ? 看来你是想给自己制造更大的麻烦。 ids 不会被立即处理。稍后将决定如何更新带有 id 的行。 【参考方案1】:你可以使用group_concat()
:
select group_concat(id, ',') as ids, name, surname, sum(time) as time
from table t
group by name, surname;
只是不要将结果存储回数据库中。逗号分隔值对于返回结果很有用,但在数据库中存储数据的格式是错误的。
【讨论】:
group_concat(id) 就足够了。其余的都是不允许的,但你把我带到了那里,谢谢以上是关于在一次选择中选择多个 ID的主要内容,如果未能解决你的问题,请参考以下文章