MySQL中的GROUP_CONCAT()函數(shù)常用于將多行數(shù)據(jù)合并成一行,常見用途有統(tǒng)計(jì)某列的所有值、將某列的值拼接成字符串等。但有時(shí)候我們需要對拼接出來的結(jié)果去重,這時(shí)候就需要使用GROUP_CONCAT()函數(shù)的DISTINCT關(guān)鍵字。
SELECT GROUP_CONCAT(DISTINCT column_name SEPARATOR ', ') FROM table_name;
以上語句中的DISTINCT關(guān)鍵字指定了要去重的列,其余語法與正常的GROUP_CONCAT()函數(shù)用法相同。在去重之后,我們還可以通過指定SEPARATOR關(guān)鍵字來定義每個(gè)值之間的分隔符。
需要注意的是,DISTINCT關(guān)鍵字只會對拼接出來的結(jié)果去重,并不會影響原表中的數(shù)據(jù)。如果需要對原表中的數(shù)據(jù)進(jìn)行去重,可以使用GROUP BY語句來實(shí)現(xiàn)。
SELECT column_name FROM table_name GROUP BY column_name;
以上語句中的GROUP BY語句指定了按照column_name列進(jìn)行分組,并返回不重復(fù)的column_name值。