Để đặt giá trị cột làm tên cột trong kết quả truy vấn, bạn cần sử dụng câu lệnh CASE.
Cú pháp như sau -
chọn yourIdColumnName, max (trường hợp khi (yourColumnName1 ='yourValue1') rồi đến yourColumnName2 else NULLend) là 'yourValue1', max (trường hợp khi (yourColumnName1 ='yourValue2') rồi đến yourColumnName2 else NULLend) là 'yourValue2' trường hợp khi yourColumnName1 ='yourValue3') thì yourColumnName2 khác NULLend) là 'yourValue3', .. Nfrom valueAsColumngroup by yourIdColumnNameorder by yourIdColumnName;
Để hiểu cú pháp trên, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau -
mysql> tạo giá trị bảngAsColumn -> (-> UserId int, -> UserColumn1 varchar (10), -> UserColumn2 varchar (10) ->); Truy vấn OK, 0 hàng bị ảnh hưởng (0,75 giây)
Bây giờ bạn có thể chèn một số bản ghi trong bảng bằng cách sử dụng lệnh insert. Truy vấn như sau -
mysql> chèn vào giá trị valueAsColumn (0, 'John', 'A +'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,18 giây) mysql> chèn vào giá trị valueAsColumn (0, 'Carol', 'B'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,17 giây) mysql> chèn vào giá trị valueAsColumn (0, 'Sam', 'C'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,17 giây) mysql> chèn vào giá trị valueAsColumn (1, 'John', 'D'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,20 giây) mysql> chèn vào các giá trị valueAsColumn (1, 'Carol', 'A'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,20 giây) mysql> chèn vào giá trị valueAsColumn ( 1, 'Carol', 'C'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,15 giây)
Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng một câu lệnh chọn. Truy vấn như sau -
mysql> select * from valueAsColumn;
Sau đây là kết quả -
+ -------- + ------------- + ------------- + | UserId | UserColumn1 | UserColumn2 | + -------- + ------------- + ------------- + | 0 | John | A + || 0 | Carol | B || 0 | Sam | C || 1 | John | D || 1 | Carol | A || 1 | Carol | C | + -------- + ------------- + ------------- + 6 hàng trong bộ (0,00 giây)Đây là truy vấn để đặt giá trị cột làm tên cột -
mysql> chọn UserId, -> max (trường hợp khi (UserColumn1 ='John') rồi đến UserColumn2 khác NULL kết thúc) là 'John', -> max (trường hợp khi (UserColumn1 ='Carol') sau đó UserColumn2 khác NULL kết thúc ) dưới dạng 'Carol', -> max (trường hợp khi (UserColumn1 ='Sam') thì UserColumn2 khác NULL end) là 'Sam' -> từ valueAsColumn -> nhóm theo UserId -> thứ tự theo UserId;Sau đây là kết quả -
+ -------- + ------ + ------- + ------ + | UserId | John | Carol | Sam | + -------- + ------ + ------- + ------ + | 0 | A + | B | C || 1 | Đ | C | NULL | + -------- + ------ + ------- + ------ + 2 hàng trong bộ (0,00 giây)