У меня есть таблица вроде этого:MySQL GROUP_CONCAT дважды в подзапрос DISTINCT
title name
1 ADAM SMITH
1 JACK SMITH
1 ROBERT ABADI
2 JACK SMITH
2 JAMES ANDERSON
3 JACK SMITH
Когда я называю данные с запросом выглядит
SELECT title, name, group_concat(name) as gname
FROM sample
GROUP BY title
Результат:
1 ADAM SMITH ADAM SMITH,JACK SMITH,ROBERT ABADI
2 JACK SMITH JACK SMITH,JAMES ANDERSON
3 JACK SMITH JACK SMITH
Теперь, Я хочу снова сгруппировать по имени. поэтому я вызываю этот запрос, и результаты следуют.
SELECT title, name, group_concat(distinct gname)
FROM
(
SELECT title, name, group_concat(name) as gname
FROM sample
GROUP BY title
) sub
GROUP BY sub.name
1 ADAM SMITH ADAM SMITH,JACK SMITH,ROBERT ABADI
2 JACK SMITH JACK SMITH,JAMES ANDERSON,JACK SMITH
Но я не хочу иметь «JACK SMITH
» дважды на последней колонке.
Я знаю причину, потому что первые group_concat()
результаты - это строка, которая не может применяться с 'DISTINCT
'.
Любые предложения приветствуются.
Ваш первый запрос не имеет смысла. Столбец 'name' - это просто произвольно выбранное имя из группы' title', почему бы вам тогда захотеть сгруппироваться? – Barmar
Я хочу знать, кому принадлежит (автор) тот же заголовок (paper). Поэтому первый запрос отобразит gname (соавтор). Эта таблица и данные являются просто образцом. В таблице указаны первая, средняя, фамилия и название. Поэтому мы хотели бы знать первого соавтора каждой статьи. Это имеет смысл больше? Спасибо @Barmar – Karl
Но вы получите совершенно разные результаты в зависимости от того, выбирает ли подзапрос Джек Смит или Джеймс Андерсон в качестве автора заголовка 2. – Barmar