除了一列之外的所有行都相似

时间:2011-06-30 10:05:50

标签: mysql sql jdbc

我不确定这是什么叫做但是它总是在你得到结果集时发生:

(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 

现在,当您迭代此结果集时,如何在具有相似nameage s的行上连接最后一列?获得John Smith,21,"Pepperoni,Ham,Olives"之类的结果。一般来说这个动作是什么?如果重要的话,我正在使用JDBC-MySQL。

由于

4 个答案:

答案 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值将在服务器变量确定的长度被截断,但在这种情况下看起来不是问题。