Computer >> Máy Tính >  >> Lập trình >> MySQL

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

Để đặ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)