De vraag is eigenlijk hoe je hieruit kunt komen:
foo_id foo_name 1 A 1 B 2 C
naar dit:
foo_id foo_name 1 A B 2 C
Antwoord 1, autoriteit 100%
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
https://dev.mysql. com/doc/refman/8.0/en/aggregate-functions.html#function_group-concat
Van de bovenstaande link, GROUP_CONCAT
: deze functie retourneert een tekenreeksresultaat met de aaneengeschakelde niet-NULL-waarden van een groep. Het geeft NULL terug als er geen niet-NULL-waarden zijn.
Antwoord 2, autoriteit 27%
SELECT id, GROUP_CONCAT( string SEPARATOR ' ') FROM table GROUP BY id
Meer details hier.
Van de bovenstaande link, GROUP_CONCAT
: deze functie retourneert een tekenreeksresultaat met de aaneengeschakelde niet-NULL-waarden van een groep. Het geeft NULL terug als er geen niet-NULL-waarden zijn.
Antwoord 3, autoriteit 3%
SELECT id, GROUP_CONCAT(CAST(name as CHAR)) FROM table GROUP BY id
Geeft u een door komma’s gescheiden tekenreeks
Antwoord 4, autoriteit 3%
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
:-
In MySQL kunt u de aaneengeschakelde waarden van uitdrukkingscombinaties krijgen
. Gebruik de DISTINCT-clausule om dubbele waarden te elimineren. Gebruik de ORDER BY-component om waarden in het resultaat te sorteren. Om in omgekeerde volgordete sorteren, voegt u het trefwoord DESC(aflopend) toe aan de naam van de kolom waarop u sorteert in de ORDER BY-clausule. De standaard is oplopende volgorde; dit kan expliciet worden gespecificeerd met behulp van het ASC-sleutelwoord. Het standaardscheidingsteken tussen waarden in een groep is een komma (“,”). Om expliciet een scheidingsteken op te geven, gebruikt u SEPARATOR gevolgd door de letterlijke tekenreekswaarde die tussen groepswaarden moet worden ingevoegd. Om het scheidingsteken helemaal te verwijderen, specificeert u SEPARATOR ”.
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
OF
mysql> SELECT student_name,
-> GROUP_CONCAT(DISTINCT test_score
-> ORDER BY test_score DESC SEPARATOR ' ')
-> FROM student
-> GROUP BY student_name;
Antwoord 5, autoriteit 3%
Het resultaat wordt afgekapt tot de maximale lengte die wordt gegeven door de group_concat_max_len systeemvariabele, die een standaardwaarde heeft van 1024 tekens, dus we doen eerst:
SET group_concat_max_len=100000000;
en dan, bijvoorbeeld:
SELECT pub_id,GROUP_CONCAT(cate_id SEPARATOR ' ') FROM book_mast GROUP BY pub_id
Antwoord 6, autoriteit 2%
Geweldige antwoorden.
Ik had ook een probleem met NULLS en heb het kunnen oplossen door een COALESCE in de GROUP_CONCAT op te nemen. Voorbeeld als volgt:
SELECT id, GROUP_CONCAT(COALESCE(name,'') SEPARATOR ' ')
FROM table
GROUP BY id;
Hopelijk helpt dit iemand anders