Temel olarak soru bundan nasıl elde edileceğidir:
foo_id foo_name 1 A 1 B 2 C
buna:
foo_id foo_name 1 AB 2 C
Temel olarak soru bundan nasıl elde edileceğidir:
foo_id foo_name 1 A 1 B 2 C
buna:
foo_id foo_name 1 AB 2 C
Yanıtlar:
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
Yukarıdaki bağlantıdan GROUP_CONCAT
: Bu işlev, bir gruptan birleştirilen NULL olmayan değerlerle bir dize sonucu döndürür. NULL olmayan değerler yoksa NULL döndürür.
SELECT id, GROUP_CONCAT( string SEPARATOR ' ') FROM table GROUP BY id
Daha fazla ayrıntı burada .
Yukarıdaki bağlantıdan GROUP_CONCAT
: Bu işlev, bir gruptan birleştirilen NULL olmayan değerlerle bir dize sonucu döndürür. NULL olmayan değerler yoksa NULL döndürür.
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
: - MySQL'de ifade kombinasyonlarının birleştirilmiş değerlerini alabilirsiniz. Yinelenen değerleri ortadan kaldırmak için DISTINCT yan tümcesini kullanın . Sonuçtaki değerleri sıralamak için ORDER BY deyimini kullanın. İçinde sıralamak için ters ekleyin DESC ORDER BY yan tümcesinde tarafından size ayırırken sütunun adının (azalan) anahtar kelime. Varsayılan değer artan düzendir; bu ASC anahtar sözcüğü kullanılarak açıkça belirtilebilir. Bir gruptaki değerler arasındaki varsayılan ayırıcı virgüldür (“,”). Bir ayırıcıyı açıkça belirtmek için, SEPARATOR ve ardından grup değerleri arasına girilmesi gereken dize hazır değeri kullanın. Ayırıcıyı tamamen ortadan kaldırmak için SEPARATOR'u belirtin '' .
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
VEYA
mysql> SELECT student_name,
-> GROUP_CONCAT(DISTINCT test_score
-> ORDER BY test_score DESC SEPARATOR ' ')
-> FROM student
-> GROUP BY student_name;
Sonuç, varsayılan 1024 karakter değerine sahip group_concat_max_len sistem değişkeni tarafından verilen maksimum uzunluğa kesilir, bu yüzden önce şunu yaparız:
SET group_concat_max_len=100000000;
ve sonra, örneğin:
SELECT pub_id,GROUP_CONCAT(cate_id SEPARATOR ' ') FROM book_mast GROUP BY pub_id
group_concat_max_len
yapılandırmanın kapsamı nedir ? Geçerli bağlantı / oturum mu yoksa diğer istemcileri mi etkiler?
Harika cevaplar. Ayrıca NULLS ile ilgili bir sorunum vardı ve GROUP_CONCAT içine bir COALESCE ekleyerek çözmeyi başardım. Aşağıdaki gibi örnek:
SELECT id, GROUP_CONCAT(COALESCE(name,'') SEPARATOR ' ')
FROM table
GROUP BY id;
Umarım bu başka birine yardımcı olur