sql >> Database >  >> RDS >> Mysql

GROUP_CONCAT mysql-instructiefout

Als je naar je code kijkt (en inzoomt):

SET @sql = CONCAT('SELECT id_c, students,', @sql, '
        [..]
                CONCAT(B.`code`, '_', A.id_a) col,
                CONCAT(D.value_m, ',', D.value_n) val
        [..]
        GROUP BY id_c'
    );

je zult zien dat _ en , zijn zwart, terwijl ze rood moeten zijn als onderdeel van de string. Dat betekent dat je string daar "gebroken" is. U moet dus de enkele aanhalingstekens escapen met '' :

SET @sql = CONCAT('SELECT id_c, students,', @sql, '
        [..]
                CONCAT(B.`code`, ''_'', A.id_a) col,
                CONCAT(D.value_m, '','', D.value_n) val
        [..]
        GROUP BY id_c'
    );

Of gebruik dubbele aanhalingstekens voor strings die enkele aanhalingstekens bevatten:

SET @sql = CONCAT('SELECT id_c, students,', @sql, "
        [..]
                CONCAT(B.`code`, '_', A.id_a) col,
                CONCAT(D.value_m, ',', D.value_n) val
        [..]
        GROUP BY id_c"
    );

Nu is de hele string rood zoals het hoort :-)

http://rextester.com/SLMU41976




  1. Een berekende kolom maken in SQLite

  2. Volgorde van uitvoering van de SQL-query

  3. MySQL:een reeks kolommen beperken, zodat ten minste één niet NULL is

  4. Een verhaal van twee clusterfactoren