Разница между GROUP_CONCAT () и CONCAT_WS ()?

17

Я безуспешно искал удовлетворительное объяснение разницы между GROUP_CONCAT() и CONCAT_WS() .

Являются ли они такими же близкими, как я считаю?

Каковы различия в использовании, скорости и т. д. между этими двумя функциями?

    
задан Matt 09.08.2012 в 20:06
источник
  • оба разные Мэтт, как объяснено в ответ. –  Kalpesh 09.08.2012 в 20:21
  • @Kalpesh Спасибо! Это полностью очистило меня. –  Matt 09.08.2012 в 20:22
  • мое удовольствие @Matt –  Kalpesh 09.08.2012 в 20:25

2 ответа

41

GROUP_CONCAT используется, если вы хотите иметь значения, отличные от NULL, из разных столбцов столбцов в одной строке. Для этого вам нужно, чтобы GROUP BY работал.

CONCAT_WS состоит в объединении двух или более строк.

Пример

GROUP_CONCAT(CONCAT_WS(' ', firstname, lastname) ORDER BY id ASC SEPARATOR ',');

Выводит что-то вроде

John Doe,Blah Blah,Tom Cruise,Lorem Ipsum

здесь пробел между именем происходит из-за CONCAT_WS , в то время как весь результат в одной строке из-за GROUP_CONCAT

    
ответ дан Kalpesh 09.08.2012 в 20:18
источник
  • Я сделаю +1, если у меня будет больше голосов. –  Matt 09.08.2012 в 20:22
  • Кроме того, если вы хотите использовать разделитель с GROUP_CONCAT, вы можете использовать оператор SEPARATOR следующим образом: GROUP_CONCAT (lastname SEPARATOR '-') –  ONOZ 14.01.2014 в 13:27
  • CONCAT_WS () может фактически присоединиться к произвольному числу значений, а не только к двум. Эквивалент PHP - implode (). –  François 12.02.2016 в 00:50
  • @ François спасибо, обновил ответ. –  Kalpesh 12.02.2016 в 21:10
2

Изобразительная разница:

Ссылка

GROUP_CONCAT ниже

Ссылка     

ответ дан cellepo 24.02.2017 в 18:53
источник
  • Хорошие фотографии, очень полезно –  Yu Jiaao 27.01.2018 в 14:27