В этом запросе:
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
Если есть лучший способ сделать это, я открыт для этого.
Вы можете использовать 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
GROUP BY c.'content'
? Также я хотел бы спросить: всегда ли лучше обращаться с этим так? GROUP BY
в JOIN
и group_concat
из JOIN
? Или нет эффекта производительности?
GROUP BY c.'content'
будет достаточно. У меня нет более подробной информации из таблиц. Я не могу сказать вам, что всегда лучше справляться с этим. Потому что разные сценарии будут иметь разные решения
u.id
который выбран до объединения в самом запросе.