Невозможно выбрать DISTINCT в запросе GROUP_CONCAT DERIVED

0

В этом запросе:

SELECT u.'id', nc.'con' FROM 'users' u
LEFT JOIN (
  SELECT n.'uid', GROUP_CONCAT(DISTINCT c.'content') AS 'con' 
  FROM 'names' n
  INNER JOIN 'contents' c ON n.'uid' = c.'aid'
  GROUP BY n.'uid'
) nc ON nc.'uid' = u.'id'
WHERE u.'age' = 15

Я хочу эффективно SELECT DISTINCT c.content значения SELECT DISTINCT c.content,

Я вообще не хочу использовать DISTINCT, и, если возможно, хочу использовать GROUP BY, поскольку использование DISTINCT похоже на устранение проблемы,

Прямо сейчас я сделал этот запрос, но он даже не SELECT DISTINCT в GROUP_CONCAT со многими ROW.

Я хочу получить без использования DISTINCT если возможно результат:

con: A, B

Я получаю результат:

con: A,B,B,A,A,B

Если есть лучший способ сделать это, я открыт для этого.

  • 0
    Сделайте отчетливый конкат, прежде чем присоединиться
  • 0
    @Used_By_Already Я получаю значения в зависимости от выбранного столбца u.id который выбран до объединения в самом запросе.
Показать ещё 2 комментария
Теги:

1 ответ

1
Лучший ответ

Вы можете использовать GROUP BY в подзапросе, а затем group_concat.

Можешь попробовать.

SELECT u.'id', group_concat(nc.'con')
FROM 'users' u
LEFT JOIN (
  SELECT n.'uid', c.'content' AS 'con' 
  FROM 'names' n
  INNER JOIN 'contents' c ON n.'uid' = c.'aid'
  GROUP BY n.'uid',c.'content'
) nc ON nc.'uid' = u.'id'
WHERE u.'age' = 15

SQLFiddle

  • 0
    Не будет ли достаточно GROUP BY c.'content' ? Также я хотел бы спросить: всегда ли лучше обращаться с этим так? GROUP BY в JOIN и group_concat из JOIN ? Или нет эффекта производительности?
  • 0
    В этом случае GROUP BY c.'content' будет достаточно. У меня нет более подробной информации из таблиц. Я не могу сказать вам, что всегда лучше справляться с этим. Потому что разные сценарии будут иметь разные решения
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню