Rumah pangkalan data tutorial mysql 执行一次SQL查询,UPDATE多行记录_MySQL

执行一次SQL查询,UPDATE多行记录_MySQL

Jun 01, 2016 pm 01:32 PM
Rekod

bitsCN.com

执行一次SQL查询,UPDATE多行记录

 

通常情况下,我们会使用以下SQL语句来更新字段值:

1

UPDATE mytable SET myfield='value' WHERE other_field='other_value';

     但是,如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?举个例子,我的博客有三个分类目录(免费资源、教程指南、橱窗展示),这些分类目录的信息存储在数据库表categories中,并且设置了显示顺序字段 display_order,每个分类占一行记录。如果我想重新编排这些分类目录的顺序,例如改成(教程指南、橱窗展示、免费资源),这时就需要更新categories表相应行的display_order字段,这就涉及到更新多行记录的问题了,刚开始你可能会想到使用循环执行多条UPDATE语句的方式,就像以下的php程序示例:

 

foreach ($display_order as $id => $ordinal) {

    $sql="UPDATE categories SET display_order = $ordinal WHERE id = $id";

    mysql_query($sql);

}

     这种方法并没有什么任何错误,并且代码简单易懂,但是在循环语句中执行了不止一次SQL查询,在做系统优化的时候,我们总是想尽可能的减少数据库查询的次数,以减少资源占用,同时可以提高系统速度。幸运的是,还有更好的解决方案,只不过SQL语句稍微复杂点,但是只需执行一次查询即可,语法如下:

 

UPDATE mytable

    SET myfield = CASE other_field

        WHEN 1 THEN 'value'

        WHEN 2 THEN 'value'

        WHEN 3 THEN 'value'

    END

WHERE id IN (1,2,3)

     回到我们刚才的分类目录的例子,我们可以使用以下SQL语句:

 

UPDATE categories

    SET display_order = CASE id

        WHEN 1 THEN 3

        WHEN 2 THEN 1

        WHEN 3 THEN 2

    END

WHERE id IN (1,2,3)

     这样的SQL语句是很容易理解的,也就是用到了很多编程语言都有的关键字 CASE,根据id字段值来进行不同分支的当型判断,进而更新display_order字段值。例如原来id=1的记录的display_order改成了3,id=2的记录的display_order改成了1,只需执行一次查询即可更新多行记录。在通常情况,WHERE子句是可有可无的,添加该WHERE子句的意义与其他用到WHERE子句的普通SQL是一样的。
 

     如果你需要更新一行记录的多个字段,可以用以下SQL语句:

 

UPDATE categories

    SET display_order = CASE id

        WHEN 1 THEN 3

        WHEN 2 THEN 4

        WHEN 3 THEN 5

    END,

    title = CASE id

        WHEN 1 THEN 'New Title 1'

        WHEN 2 THEN 'New Title 2'

        WHEN 3 THEN 'New Title 3'

    END

WHERE id IN (1,2,3)

     以上方案大大减少了数据库的查询操作次数,大大节约了系统资源,但是该怎样与我们的编程语言结合起来呢?我们还是用刚才分类目录的例子,以下是php的程序示例:

 

$display_order = array(

    1 => 4,

    2 => 1,

    3 => 2,

    4 => 3,

    5 => 9,

    6 => 5,

    7 => 8,

    8 => 9

);

 

$ids = implode(',', array_keys($display_order));

$sql = "UPDATE categories SET display_order = CASE id ";

foreach ($display_order as $id => $ordinal) {

    $sql .= sprintf("WHEN %d THEN %d ", $id, $ordinal);  // 拼接SQL语句

}

$sql .= "END WHERE id IN ($ids)";

echo $sql;

mysql_query($sql);

     在这个例子中总共更新了8行数据,但是只执行了一次数据库查询,相比于循环执行8次UPDATE语句,以上例子所节约的时间可以说是微不足道的。但是想想,当你需要更新10,0000或者更多行记录时,你会发现这其中的好处!唯一要注意的问题是SQL语句的长度,需要考虑程序运行环境所支持的字符串长度,我目前获得的数据:SQL语句长度达到1,000,960在php中仍然可以顺利执行,我查询了php文档并没有发现明确规定字符串最大长度。

bitsCN.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Di manakah saya boleh melihat rekod perkara yang telah saya beli di Pinduoduo Bagaimana untuk melihat rekod produk yang dibeli? Di manakah saya boleh melihat rekod perkara yang telah saya beli di Pinduoduo Bagaimana untuk melihat rekod produk yang dibeli? Mar 12, 2024 pm 07:20 PM

Perisian Pinduoduo menyediakan banyak produk yang bagus, anda boleh membelinya pada bila-bila masa dan di mana-mana sahaja, dan kualiti setiap produk dikawal ketat, setiap produk adalah tulen, dan terdapat banyak diskaun beli-belah keutamaan, membolehkan semua orang membeli-belah dalam talian. Masukkan nombor telefon mudah alih anda untuk log masuk dalam talian, tambahkan berbilang alamat penghantaran dan maklumat hubungan dalam talian, dan semak arah aliran logistik terkini pada bila-bila masa. Cari dan leret ke atas dan ke bawah untuk membeli dan membuat pesanan. Anda boleh mengalami kemudahan tanpa meninggalkan rumah Dengan perkhidmatan membeli-belah dalam talian, anda juga boleh melihat semua rekod pembelian, termasuk barangan yang telah anda beli, dan menerima berpuluh-puluh sampul merah beli-belah dan kupon Sekarang editor telah menyediakan maklumat dalam talian terperinci untuk Pengguna Pinduoduo untuk melihat rekod produk yang dibeli. 1. Buka telefon anda dan klik pada ikon Pinduoduo.

Bagaimana untuk menyemak sejarah panggilan dalam iPhone dan mengeksportnya? Bagaimana untuk menyemak sejarah panggilan dalam iPhone dan mengeksportnya? Jul 05, 2023 pm 12:54 PM

Rakaman panggilan dalam iPhone sering dipandang remeh dan merupakan salah satu ciri iPhone yang paling kritikal. Dengan kesederhanaannya, ciri ini amat penting dan boleh memberikan cerapan penting tentang panggilan yang dibuat atau diterima pada peranti. Sama ada untuk tujuan kerja atau prosiding undang-undang, keupayaan untuk mengakses rekod panggilan boleh terbukti tidak ternilai. Secara ringkas, sejarah panggilan merujuk kepada entri yang dibuat pada iPhone anda apabila anda membuat atau menerima panggilan. Log ini mengandungi maklumat penting, termasuk nama kenalan (atau nombor jika tidak disimpan sebagai kenalan), cap masa, tempoh dan status panggilan (didail, terlepas atau tidak dijawab). Ia adalah rekod ringkas tentang sejarah komunikasi anda. Sejarah panggilan termasuk jalur sejarah panggilan yang disimpan pada iPhone anda

Cara melihat dan mengurus sejarah arahan Linux Cara melihat dan mengurus sejarah arahan Linux Aug 01, 2023 pm 09:17 PM

Cara Melihat Sejarah Perintah dalam Linux Di Linux, kami menggunakan perintah sejarah untuk melihat senarai semua arahan yang dilaksanakan sebelum ini. Ia mempunyai sintaks yang sangat mudah: sejarah Beberapa pilihan untuk berpasangan dengan perintah sejarah termasuk: Penerangan pilihan -c mengosongkan sejarah arahan untuk sesi semasa -w menulis sejarah arahan ke fail -r memuat semula sejarah arahan daripada fail sejarah - n Hadkan bilangan keluaran bagi perintah terkini Hanya jalankan perintah sejarah untuk melihat senarai semua perintah yang dilaksanakan sebelum ini dalam terminal Linux: Selain melihat sejarah arahan, anda juga boleh mengurus sejarah arahan dan melakukan pengubahsuaian pada perintah yang dilaksanakan sebelum ini, membalikkan cari sejarah arahan atau padam sejarah sepenuhnya

Cara melihat sejarah log ubat anda dalam apl Kesihatan pada iPhone Cara melihat sejarah log ubat anda dalam apl Kesihatan pada iPhone Nov 29, 2023 pm 08:46 PM

iPhone membolehkan anda menambah ubat dalam apl Kesihatan untuk menjejak dan mengurus ubat, vitamin dan suplemen yang anda ambil setiap hari. Anda kemudian boleh log ubat yang telah anda ambil atau langkau apabila anda menerima pemberitahuan pada peranti anda. Selepas anda mencatatkan ubat anda, anda boleh melihat kekerapan anda mengambil atau melangkaunya untuk membantu anda menjejaki kesihatan anda. Dalam siaran ini, kami akan membimbing anda untuk melihat sejarah log ubat yang dipilih dalam apl Kesihatan pada iPhone. Panduan ringkas tentang cara melihat sejarah log ubat anda dalam Apl Kesihatan: Pergi ke Apl Kesihatan>Semak imbas>Ubat>Ubat>Pilih Ubat>Pilihan&a

Nasihat Pembangunan C#: Sistem Pembalakan dan Pemantauan Nasihat Pembangunan C#: Sistem Pembalakan dan Pemantauan Nov 22, 2023 pm 08:30 PM

Cadangan Pembangunan C#: Sistem Pembalakan dan Pemantauan Ringkasan: Dalam proses pembangunan perisian, sistem pembalakan dan pemantauan adalah alat penting. Artikel ini akan memperkenalkan peranan dan cadangan pelaksanaan sistem pembalakan dan pemantauan dalam pembangunan C#. Pengenalan: Pembalakan dan pemantauan adalah alat penting dalam projek pembangunan perisian berskala besar. Mereka boleh membantu kami memahami status berjalan program dalam masa nyata dan menemui serta menyelesaikan masalah dengan cepat. Artikel ini akan membincangkan cara menggunakan sistem pengelogan dan pemantauan dalam pembangunan C# untuk meningkatkan kualiti perisian dan kecekapan pembangunan. Peranan sistem pembalakan

Bagaimana untuk log dan memantau projek pembangunan Java Bagaimana untuk log dan memantau projek pembangunan Java Nov 03, 2023 am 10:09 AM

Bagaimana untuk log dan memantau projek pembangunan Java 1. Pengenalan latar belakang Dengan perkembangan pesat Internet, semakin banyak syarikat telah mula membangunkan Java dan membina pelbagai jenis aplikasi. Dalam proses pembangunan, pembalakan dan pemantauan adalah pautan penting yang tidak boleh diabaikan. Melalui pembalakan dan pemantauan, pembangun boleh menemui dan menyelesaikan masalah dalam masa untuk memastikan kestabilan dan keselamatan aplikasi. 2. Kepentingan pembalakan 1. Penjejakan masalah: Apabila ralat aplikasi berlaku, pengelogan boleh membantu kami mencari masalah dengan cepat.

Bagaimana untuk mengosongkan sejarah pada iPhone Bagaimana untuk mengosongkan sejarah pada iPhone Jun 29, 2023 pm 01:13 PM

Bagaimana untuk mengosongkan sejarah iPhone dalam Safari? Untuk mengosongkan sejarah penyemakan imbas dan carian anda pada Safari Apple, anda perlu membuka apl Tetapan pada peranti anda. Selepas memilih Tetapan, anda perlu tatal ke bawah dan pilih Safari, kemudian menu lain akan muncul dan anda perlu memilih Kosongkan Sejarah dan Data Laman Web. Anda kini perlu memilih Kosongkan Sejarah dan Data daripada menu, yang akan memadamkan semua sejarah carian, sejarah penyemakan imbas, kuki dan data daripada penyemak imbas Safari Apple. Itu sahaja, semua sejarah penyemakan imbas dan sejarah carian anda yang terdahulu kini dipadamkan daripada Safari. Jika anda tidak mahu memadamkan semua sejarah carian dalam Safari

Bagaimana untuk merekodkan kilometer larian dalam simpanan Di manakah trek larian direkodkan? Bagaimana untuk merekodkan kilometer larian dalam simpanan Di manakah trek larian direkodkan? Mar 12, 2024 am 11:10 AM

Kita semua tahu bahawa perkara di atas adalah perisian sukan yang sangat baik untuk kami, yang boleh membantu pengguna menyelesaikan pelbagai sukan dalam masa nyata, dan kami juga boleh melihat beberapa trajektori di atas semasa beberapa proses berjalan Anda boleh mengetahui lebih lanjut mengenainya 't tahu tentang beberapa maklumat fungsi di atas, jadi hari ini saya akan memberi anda penjelasan yang baik tentang beberapa kandungan dan pengalaman, supaya semua orang boleh menjalankan pelbagai fungsi dengan lebih baik Jika anda juga ingin tahu beberapa trek dan rekod tentang larian anda sendiri, pastikan anda tidak terlepas kandungan yang lebih berkualiti tinggi menanti anda untuk mengetahuinya. Banyak maklumat strategi yang menarik menanti anda dengan editor sekarang. ,

See all articles