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

Apakah ada cara untuk memutar baris ke kolom di MySQL tanpa menggunakan CASE?

Tautan yang disediakan Kangkan akan menunjukkan kepada Anda cara melakukannya seandainya Anda mengetahui nama kolom sebelumnya. Kami menggunakan logika yang sama, kecuali menggunakan SQL dinamis untuk membuat pernyataan. Ada 2 bagian untuk setiap bidang yang perlu Anda sertakan, bidang dalam pernyataan pilih dan gabungan yang sesuai untuk mendapatkan nilai...jadi kita perlu membuat pernyataan dalam dua bagian

Pertama deklarasikan 3 variabel untuk membangun ini...Saya akan menggunakan @select, @join, dan @sql untuk contoh ini. Berikan variabel nilai awal

 set @select = 'select user_id,'
 set @join = 'from table t'

sekarang mendeklarasikan dan memuat kursor dengan nilai yang berbeda di bidang table.key. Saya akan menggunakan @field karena variabel akan diisi dengan bidang table.key yang berbeda. Kemudian ulangi untuk membangun dua variabel:

 set @select = @select + ', ' + @field + '.value as '[email protected]+'
 set @join = @join + ' left join table ' + @field + 'on '[email protected]+'.key = t.key and and '[email protected]+'.user_id = t.user_id

(gabungan dirancang untuk menggunakan nilai di @field sebagai alias tabel)

loop melalui kursor Anda membangun @select dan @join. Di akhir perulangan:

set @sql = @select + @join + 'where clause if you want'
exec @sql

SQL dinamis yang dibangun seperti ini bisa sangat merepotkan untuk memecahkan masalah (dan mendapatkan yang benar) dan membuka masalah keamanan ... tapi ini satu-satunya cara saya bisa melihat ini selesai. Perhatikan batasan ukuran pada variabel Anda.... jika Anda memiliki terlalu banyak Kunci yang berbeda di sana, variabel akan tumbuh terlalu besar. Maaf saya tidak bisa lebih tepat dengan pseudo ini... Anda akan menemukan membangun sql dinamis di sql sangat melelahkan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Poin kueri dalam radius tertentu di MySQL

  2. Saat mengimpor file mysqldump ERROR 1064 (42000) di dekat ' ■/ ' di baris 1

  3. Bagaimana cara membuat Pagination di Codeiginter?

  4. mysql- Bagaimana cara menerapkan hibah ke kolom?

  5. Periksa apakah model laravel disimpan atau kueri dieksekusi