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

Đặt giá trị cột làm tên cột trong kết quả truy vấn SQL

Điều này được thực hiện với bảng tổng hợp . Nhóm theo id , bạn phát hành CASE các câu lệnh cho mỗi giá trị bạn muốn nắm bắt trong một cột và sử dụng một cái gì đó như MAX() tổng hợp để loại bỏ các giá trị rỗng và thu gọn xuống một hàng.

SELECT
  id,
  /* if col1 matches the name string of this CASE, return col2, otherwise return NULL */
  /* Then, the outer MAX() aggregate will eliminate all NULLs and collapse it down to one row per id */
  MAX(CASE WHEN (col1 = 'name') THEN col2 ELSE NULL END) AS name,
  MAX(CASE WHEN (col1 = 'name2') THEN col2 ELSE NULL END) AS name2,
  MAX(CASE WHEN (col1 = 'name3') THEN col2 ELSE NULL END) AS name3
FROM
  yourtable
GROUP BY id
ORDER BY id

Đây là một mẫu hoạt động

Lưu ý:Điều này chỉ hoạt động đối với một số lượng hữu hạn và đã biết các giá trị có thể có cho col1 . Nếu số lượng giá trị có thể là không xác định, bạn cần phải tạo động câu lệnh SQL trong một vòng lặp.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự khác biệt giữa bảng mã utf8mb4 và utf8 trong MySQL là gì?

  2. MySQL và MongoDB 1000 lần đọc

  3. MySQL Trigger để ngăn INSERT trong các điều kiện nhất định

  4. Làm thế nào để loại bỏ ràng buộc Not Null trong MySQL

  5. Mysql_real_escape_string () có bảo vệ HOÀN TOÀN khỏi SQL injection không?