SQL:是否可以单独GROUP多个列

时间:2015-07-18 19:23:34

标签: mysql

假设我们有一个这样的表:

property1    property2    property3
21           a            car
354          d            car
76           c            basket
12           a            tape

是否可以在不使用UNION的情况下运行一个返回此类数据的查询。

property1 has values: 21, 354, 761, 12
property2 has values: a, d, c
property3 has values: car, basket, tape

或者我应该用PHP做到这一点?该表可能变得非常大,所以我认为pivot不是一个选项。

谢谢。

1 个答案:

答案 0 :(得分:2)

有几个数据库实现grouping sets,这可能会非常符合您的要求。在MySQL中,您可以使用三个单独的列:

select group_concat(distinct property1), group_concat(distinct property2), group_concat(distinct property3)
from t;

union all

select 'property1', group_concat(distinct property1)
from t
union all
select 'property2', group_concat(distinct property2)
from t
union all
select 'property3', group_concat(distinct property3)
from t;

注意:group_concat()字符串的最大长度有一个系统参数。如果您需要更长的字符串,可以更改其值。