Строки, которые похожи во всех, кроме одного столбца - PullRequest
1 голос
/ 30 июня 2011

Я не уверен, как это называется, но это происходит постоянно, когда вы получаете результат, например:

(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, если это имеет значение.

Спасибо

Ответы [ 4 ]

2 голосов
/ 30 июня 2011

Это действие можно выполнить с помощью GROUP_CONCAT в MySQL:

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.

Вы не могли бы сделать это в других СУБД с запросом.

2 голосов
/ 30 июня 2011

В MySQL это можно сделать с помощью group_concat:

select 
  id,
  name,
  age,
  group_concat(favorite separator ',')
from 
  YourTable
group by
  id,
  name,
  age
1 голос
/ 30 июня 2011

Просто:

select name, age, group_concat(favorite) group by name, age;

Возможно, вы захотите group_concat(distinct favorite) или указать заказ с помощью.(запятая является разделителем по умолчанию.)

Значения group_concat будут усечены до определенной серверной переменной длины, но в этом случае это не выглядит проблемой.

1 голос
/ 30 июня 2011

Нормализованы ли ваши данные ? Если это так, и ваши избранные хранятся в отдельной таблице, используйте GROUP_CONCAT , чтобы объединить их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...