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

Chuyển đổi một hàng thành các cột bằng MySQL mà không sử dụng UNIONS?

Tôi lấy cái này từ cuốn sách Nghệ thuật SQL , trang 284-286:

Giả sử tên bảng của bạn là foo .

Đầu tiên, tạo một bảng có tên pivot :

CREATE Table pivot (
  count int
);

Chèn vào bảng đó bao nhiêu hàng tùy theo cột mà bạn muốn xoay trong foo . Vì bạn có ba cột trong foo mà bạn muốn xoay, hãy tạo ba hàng trong bảng tổng hợp:

insert into pivot values (1);
insert into pivot values (2);
insert into pivot values (3);

Bây giờ hãy thực hiện phép nối Descartes giữa foopivot , sử dụng CASE để chọn đúng cột dựa trên số lượng:

SELECT foo.id, Case pivot.count
  When 1 Then cat
  When 2 Then one_above
  When 3 Then top_level
End Case
FROM foo JOIN pivot;

Điều này sẽ cung cấp cho bạn những gì bạn muốn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. convert_tz trả về null

  2. Trả về số hàng bị ảnh hưởng bởi câu lệnh SQL UPDATE trong Java

  3. Chọn hàng có ngày gần đây nhất cho mỗi người dùng

  4. mysql FULLTEXT tìm kiếm nhiều từ

  5. 'max_user_connections' được đặt thành 200 - vẫn gặp lỗi