我不确定这是什么叫做但是它总是在你得到结果集时发生:
(id,name,age,favorite)
0,John Smith,21,Pepperoni
1,John Smith,21,Ham
2,John Smith,21,Olives
3,John Doe,54,Tomatoes
4,John Doe,54,Potatoes
现在,当您迭代此结果集时,如何在具有相似name
和age
s的行上连接最后一列?获得John Smith,21,"Pepperoni,Ham,Olives"
之类的结果。一般来说这个动作是什么?如果重要的话,我正在使用JDBC-MySQL。
由于
答案 0 :(得分:2)
在MySQL上,您可以使用group_concat
执行此操作:
select
id,
name,
age,
group_concat(favorite separator ',')
from
YourTable
group by
id,
name,
age
答案 1 :(得分:2)
可以使用MySQL中的GROUP_CONCAT完成此操作:
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
SELECT name, age, GROUP_CONCAT(favorite SEPARATOR ',')
FROM myTable
GROUP BY name, age
注意,GROUP_CONCAT仅在MySQL中,而不是标准SQL。
您无法在其他带有查询的DBMS中执行此操作。
答案 2 :(得分:1)
您的数据是normalised吗? 如果是,并且您的收藏夹存储在单独的表中,请使用GROUP_CONCAT将它们连接起来。
答案 3 :(得分:1)
简单地:
select name, age, group_concat(favorite) group by name, age;
您可能需要group_concat(distinct favorite)
,或指定订单。 (逗号是默认分隔符。)
group_concat值将在服务器变量确定的长度被截断,但在这种情况下看起来不是问题。