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

SQL GROUP_CONCAT dibagi dalam kolom yang berbeda

Anda dapat melakukannya dengan substring_index() . Kueri berikut menggunakan milik Anda sebagai subkueri dan kemudian menerapkan logika ini:

select Name, ISOCode_2,
       substring_index(currencies, ',', 1) as Currency1,
       (case when numc >= 2 then substring_index(substring_index(currencies, ',', 2), ',', -1) end) as Currency2,
       (case when numc >= 3 then substring_index(substring_index(currencies, ',', 3), ',', -1) end)  as Currency3,
       (case when numc >= 4 then substring_index(substring_index(currencies, ',', 4), ',', -1) end)  as Currency4,
       (case when numc >= 5 then substring_index(substring_index(currencies, ',', 5), ',', -1) end)  as Currency5,
       (case when numc >= 6 then substring_index(substring_index(currencies, ',', 6), ',', -1) end)  as Currency6,
       (case when numc >= 7 then substring_index(substring_index(currencies, ',', 7), ',', -1) end)  as Currency7,
       (case when numc >= 8 then substring_index(substring_index(currencies, ',', 8), ',', -1) end)  as Currency8
from (SELECT country.Name, country.ISOCode_2, group_concat(currency.name) AS currencies,
             count(*) as numc
      FROM country
      INNER JOIN countryCurrency ON country.country_id = countryCurrency.country_id
      INNER JOIN currency ON currency.currency_id = countryCurrency.currency_id
      GROUP BY country.name
     ) t

Ekspresi substring_index(currencies, ',' 2) mengambil daftar dalam mata uang hingga yang kedua. Untuk Somoa Amerika, itu adalah 'US Dollar,Kwanza' . Panggilan berikutnya dengan -1 sebagai argumen mengambil elemen terakhir dari daftar, yang akan menjadi 'Kwanza' , yang merupakan elemen kedua dari currencies .

Perhatikan juga bahwa kueri SQL mengembalikan kumpulan kolom yang terdefinisi dengan baik. Kueri tidak boleh memiliki jumlah kolom variabel (kecuali jika Anda menggunakan SQL dinamis melalui prepare pernyataan).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Isi kotak pilih dari database menggunakan jQuery

  2. Menggunakan GROUP_CONCAT pada subquery di MySQL

  3. Python mengonversi hasil kueri mysql ke json

  4. SQL mencari beberapa nilai di bidang yang sama

  5. Bagaimana cara mengembalikan kolom integer dan numerik dari MySQL sebagai integer dan numerik di PHP?