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

Cách chọn Giá trị cột làm Tên cột với các điều kiện trong bảng SQL

Một cách để giải quyết vấn đề này là sử dụng kết hợp có điều kiện

SELECT name,
       MAX(CASE WHEN field = 'Gender' THEN value END) gender,
       MAX(CASE WHEN field = 'Age' THEN value END) age
  FROM customers
 GROUP BY name

Theo cách khác (nếu bạn chỉ quan tâm đến hai cột này) sẽ là

SELECT c1.name, c1.value gender, c2.value age
  FROM customers c1 JOIN customers c2
    ON c1.name = c2.name
   AND c1.field = 'Gender'
   AND c2.field = 'Age';

Giả định rằng cả Giới tính và Tuổi đều tồn tại cho mỗi Tên. Đó không phải là trường hợp sau đó sử dụng OUTER JOIN thay vì INNER JOIN như vậy

SELECT n.name, c1.value gender, c2.value age
  FROM
(
  SELECT DISTINCT name
    FROM customers
) n LEFT JOIN customers c1
    ON n.name = c1.name AND c1.field = 'Gender' 
    LEFT JOIN customers c2
    ON n.name = c2.name AND c2.field = 'Age';

Đầu ra:

|   NAME | GENDER | AGE |
|--------|--------|-----|
| Angela | Female |  28 |
|  Davis |   Male |  30 |

Đây là SQLFiddle bản demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm ngày giờ gần nhất với ngày giờ được chỉ định trong truy vấn mysql

  2. Sử dụng JDeveloper với Cơ sở dữ liệu MySQL và Cơ sở dữ liệu Oracle trên AWS RDS, Phần 3

  3. Di chuyển để thay đổi giá trị mặc định cho một trường và chỉ thay đổi giá trị của bản ghi hiện có thành giá trị mặc định mới nếu nó có giá trị mặc định cũ.

  4. Thiết lập Django để sử dụng MySQL

  5. LOAD DATA LOCAL INFILE đưa ra lỗi Lệnh đã sử dụng không được phép với phiên bản MySQL này