Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara menggeser nilai kolom di MySQL?

Gunakan coalesce() dan subkueri

select id, o1, 
       CASE WHEN o2!=o1 THEN o2 END o2,
       CASE WHEN o3!=o2 THEN o3 END o3 
FROM
( select id, coalesce(org1,org2,org3) o1,
             coalesce(org2,org3)      o2,
                      org3            o3 from tbl ) t

PERBARUI

Jawaban sebelumnya tidak cukup, karena R2D2 menemukan dengan tepat. Sayangnya Anda tidak dapat melakukan CTE di mysql jadi saya membuat tampilan sebagai gantinya (saya memperluas contoh dengan kolom lain org4 ):

CREATE VIEW vert AS 
select id i,1 n, org1 org FROM tbl where org1>'' UNION ALL
select id,2, org2 FROM tbl where org2>'' UNION ALL
select id,3, org3 FROM tbl where org3>'' UNION ALL
select id,4, org4 FROM tbl where org4>'';

Dengan tampilan ini, sekarang dimungkinkan untuk melakukan hal berikut:

SELECT id,
(select org from vert where i=id order by n limit 1) org1,
(select org from vert where i=id order by n limit 1,1) org2,
(select org from vert where i=id order by n limit 2,1) org3,
(select org from vert where i=id order by n limit 3,1) org4
FROM tbl

Tidak cantik, tetapi menyelesaikan pekerjaan, lihat di sini:SQLfiddle

masukan:

| id |   org1 |   org2 |    org3 |   org4 |
|----|--------|--------|---------|--------|
|  1 |     HR | (null) |   Staff |     IT |
|  2 | (null) |     IT |     Dev | (null) |
|  3 | (null) | (null) | Finance |     HR |

keluaran:

| id |    org1 |  org2 |   org3 |   org4 |
|----|---------|-------|--------|--------|
|  1 |      HR | Staff |     IT | (null) |
|  2 |      IT |   Dev | (null) | (null) |
|  3 | Finance |    HR | (null) | (null) |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengapa saya terus mendapatkan kesalahan 500 dengan PHP saya?

  2. bagaimana cara mengurutkan urutan LEFT JOIN dalam kueri SQL?

  3. PHP Menyimpan sesi dalam database. Metode baca sepertinya tidak berfungsi

  4. Bagaimana cara mengisi tabel MySQL dengan banyak angka acak?

  5. Memilih baris dari tabel yang memiliki nilai yang sama untuk satu bidang