sql >> Database teknologi >  >> RDS >> Mysql

Tilføj flere rækker i kun én række fra en enkelt tabel

Jeg er enig med de andre svar, nemlig GROUP_CONCAT sammen med PHP for at opdele de kommaseparerede værdier er nok den bedste tilgang, men hvis du af en anden grund havde brug for det output, du foreslog via Pure SQL, vil jeg foreslå en af ​​følgende fremgangsmåder.

1. Deltager selv

SELECT  t1.Name, 
        MIN(t1.Subject) AS Sub1,
        MIN(t2.Subject) AS Sub2,
        MIN(t3.Subject) AS Sub3,
        MIN(t4.Subject) AS Sub4
FROM    Students t1
        LEFT JOIN Students T2 
            ON t1.Name = t2.Name 
            AND t2.Subject > t1.Subject
        LEFT JOIN Students T3 
            ON t2.Name = t3.Name 
            AND t3.Subject > t2.Subject
        LEFT JOIN Students T4 
            ON t3.Name = t4.Name 
            AND t4.Subject > t3.Subject
GROUP BY t1.Name;
 

2. Brug af en ROW_NUMBER Type-funktion til at samle

SELECT Name, MAX(IF(RowNum = 1,Subject, NULL)) AS Sub1, MAX(IF(RowNum = 2,Subject, NULL)) AS Sub2, MAX(IF(RowNum = 3,Subject, NULL)) AS Sub3, MAX(IF(RowNum = 4,Subject, NULL)) AS Sub4 FROM ( SELECT Name, Subject, @r:= IF(@Name = Name, @r + 1, 1) AS RowNum, @Name:= Name AS Name2 FROM Students, (SELECT @Name:='') n, (SELECT @r:= 0) r ORDER BY Name, Sno ) t GROUP BY Name

  1. Angiv manuelt værdien af ​​en primær nøgle i kolonnen JPA @GeneratedValue

  2. Hent rækkeprodukt (multiplikation)

  3. Sådan installeres Azure Data Studio på en Mac

  4. Forespørgselsydelsesoptimering i MySQL