Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tambahkan beberapa baris hanya dalam satu baris dari satu tabel

Saya setuju dengan jawaban lain, bahwa GROUP_CONCAT bersama dengan PHP untuk membagi nilai yang dipisahkan koma mungkin merupakan pendekatan terbaik, namun jika karena alasan lain Anda memerlukan output yang Anda sarankan melalui Pure SQL, saya akan menyarankan salah satu pendekatan berikut.

1. Bergabung Sendiri

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. Menggunakan fungsi Jenis ROW_NUMBER untuk menggabungkan

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memindahkan kolom teks lat/lon ke kolom tipe 'titik'

  2. Mysql Buat tabel menggunakan Pemicu

  3. Memiliki Timeout untuk memperoleh koneksi setelah memutakhirkan Knex

  4. Menempatkan Rails di atas database yang ada

  5. Bagaimana cara mendapatkan id kenaikan otomatis berikutnya di mysql