Apakah ada cara untuk memperbarui beberapa kolom di SQL server dengan cara yang sama seperti pernyataan penyisipan digunakan?
Sesuatu seperti:
Update table1 set (a,b,c,d,e,f,g,h,i,j,k)=
(t2.a,t2.b,t2.c,t2.d,t2.e,t2.f,t2.g,t2.h,t2.i,t2.j,t2.k)
from table2 t2
where table1.id=table2.id
Atau sesuatu seperti itu, daripada seperti itu:
update table set a=t2.a,b=t2.b etc
yang bisa sangat melelahkan untuk menulis jika Anda memiliki 100 kolom.
Jawaban:
"Cara melelahkan" adalah SQL standar dan bagaimana RDBMS arus utama melakukannya.
Dengan 100+ kolom, sebagian besar kemungkinan Anda memiliki masalah desain ... juga, ada metode yang meringankan dalam alat klien (misalnya pernyataan generasi UPDATE) atau dengan menggunakan ORM
sumber
Coba ini:
Itu harus bekerja di sebagian besar dialek SQL, tidak termasuk Oracle.
Dan ya - ini banyak mengetik - begitulah cara SQL melakukan ini.
sumber
The
Update table1 set (a,b,c) = (select x,y,x)
sintaks adalah contoh penggunaan konstruktor baris-nilai, Oracle mendukung ini , MSSQL tidak. ( Hubungkan item )sumber
Permintaan Anda hampir benar. T-SQL untuk ini adalah:
sumber
Sintaksis
Contoh
sumber
Anda bisa mencoba ini
sumber
Saya mencoba dengan cara ini dan berfungsi dengan baik:
sumber
di sini adalah salah satu yang berfungsi:
nilai adalah kolom dari table_2
sumber
Jika Anda perlu mengetik ulang ini beberapa kali, Anda dapat melakukannya seperti yang pernah saya lakukan. Dapatkan nama kolom Anda menjadi baris dalam lembar excel (tulis di akhir setiap nama kolom (=) yang mudah di notepad ++) di sebelah kanan buat kolom untuk menyalin dan menempelkan nilai Anda yang akan sesuai dengan entri baru di setiap kolom. Kemudian di sebelah kanan mereka di kolom independen menempatkan koma seperti yang dirancang
Maka Anda harus menyalin nilai-nilai Anda ke kolom tengah setiap kali kemudian tempel saja lalu jalankan
Saya tidak tahu solusi yang lebih mudah
sumber
Saya ingin berbagi dengan Anda bagaimana saya menjawab pertanyaan semacam ini. Kasus saya sedikit berbeda karena hasil dari table2 adalah dinamis dan nomor kolom mungkin kurang dari tabel1. Namun konsepnya sama.
Pertama, dapatkan hasil dari table2.
Selanjutnya, batalkan pengaruhnya.
Kemudian tulis permintaan pembaruan menggunakan SQL dinamis. Kode contoh ditulis untuk menguji 2 tabel sederhana - tblA dan tblB
PRINT @TSQL
hasil:sumber
Saya melakukan ini di MySql dan memperbarui beberapa kolom dalam satu catatan, jadi coba ini jika Anda menggunakan MySql sebagai server Anda:
Namun, saya mengkode di vb.net menggunakan server MySql, tetapi Anda bisa membawanya ke bahasa pemrograman favorit Anda sejauh Anda menggunakan MySql sebagai server Anda.
sumber
http://www.w3schools.com/sql/sql_update.asp
sumber
sumber