Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

SQL GROUP_CONCAT chia thành các cột khác nhau

Bạn có thể thực hiện việc này với substring_index() . Truy vấn sau sử dụng truy vấn của bạn làm truy vấn con và sau đó áp dụng logic này:

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

Biểu thức substring_index(currencies, ',' 2) đưa danh sách bằng đơn vị tiền tệ lên danh sách thứ hai. Đối với American Somoa, đó sẽ là 'US Dollar,Kwanza' . Cuộc gọi tiếp theo với -1 vì đối số lấy phần tử cuối cùng của danh sách, sẽ là 'Kwanza' , là yếu tố thứ hai của currencies .

Cũng lưu ý rằng các truy vấn SQL trả về một tập hợp các cột được xác định rõ ràng. Một truy vấn không thể có số lượng cột thay đổi (trừ khi bạn đang sử dụng SQL động thông qua prepare tuyên bố).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql-connector sẽ không nhập vào script trong pycharm

  2. Thiết kế các sự kiện ngày-giờ không trùng lặp

  3. Google Chart Api tận dụng giá trị ngày giờ

  4. mysql trích xuất năm từ định dạng ngày

  5. Nhập MySQL CSV - ngày nhập là 0000-00-00 00:00:00 nếu dấu thời gian có mili giây?