Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengoptimumkan Kemas Kini Penyata CASE dalam SQL Server 2005 untuk Mengelakkan Imbasan Jadual Penuh?
Soalan Asal:
Cara mengemas kini rekod secara selektif menggunakan pernyataan CASE dalam SQL Server 2005 tanpa mengimbas semua tidak terjejas baris?
Konteks:
Pernyataan CASE berikut digunakan untuk mengemas kini nilai tertentu dalam lajur LASTNAME bagi jadual dbo.TestStudents:
UPDATE dbo.TestStudents SET LASTNAME = ( CASE WHEN (LASTNAME = 'AAA') THEN 'BBB' WHEN (LASTNAME = 'CCC') THEN 'DDD' WHEN (LASTNAME = 'EEE') THEN 'FFF' ELSE (LASTNAME) END )
Walaupun kenyataan ini mencapai tujuan yang diingini, keadaan ELSE memerlukan pengimbasan semua baris dalam jadual.
Penyelesaian:
Untuk mengelakkan mengimbas baris yang tidak terjejas, klausa WHERE boleh ditambah pada pernyataan untuk menentukan baris mana yang perlu dikemas kini.
UPDATE dbo.TestStudents SET LASTNAME = CASE WHEN LASTNAME = 'AAA' THEN 'BBB' WHEN LASTNAME = 'CCC' THEN 'DDD' WHEN LASTNAME = 'EEE' THEN 'FFF' ELSE LASTNAME END WHERE LASTNAME IN ('AAA', 'CCC', 'EEE')
Dengan menyatakan nilai LASTNAME untuk dikemas kini dalam klausa WHERE, pernyataan itu hanya mengemas kini yang terjejas baris dan membiarkan baris lain tidak berubah.
Atas ialah kandungan terperinci Bagaimana untuk Mengoptimumkan Kemas Kini Penyata CASE dalam SQL Server 2005 untuk Mengelakkan Imbasan Jadual Penuh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!