Dalam MySQL, kami sering menggunakan pertanyaan "dalam" untuk mencari keputusan dalam senarai nilai tertentu. Walau bagaimanapun, jika terdapat nilai pendua dalam senarai nilai, kami mungkin mendapat hasil yang tidak dijangka apabila menggunakan pertanyaan "dalam". Oleh itu, apabila menggunakan pertanyaan "dalam", adalah perlu bagi kita untuk memahami kesan nilai pendua dan kaedah induk untuk mengelakkan nilai pendua.
Mengapakah nilai pendua mempengaruhi pertanyaan "dalam"? Mari kita gambarkan dengan contoh. Katakan kita mempunyai jadual yang dipanggil "pelajar" yang mengandungi ID pelajar, nama, umur dan medan kelas. Kami kini mempunyai keperluan pertanyaan untuk mencari semua pelajar dalam kelas 1, 2, dan 3. Pernyataan menggunakan pertanyaan "dalam" adalah seperti berikut:
SELECT * FROM students WHERE class IN (1,2,3);
Pernyataan di atas boleh memenuhi keperluan dengan baik, tetapi jika kita memasukkan nilai berulang dalam senarai kelas, contohnya:
SELECT * FROM students WHERE class IN (1,2,3,2);
Pada masa ini, hasil pertanyaan akan memasukkan pelajar dalam Kelas 2 muncul dua kali Keputusan berulang ini bukan sahaja akan menjejaskan ketepatan hasil pertanyaan, tetapi juga mengurangkan kecekapan pertanyaan dan meningkatkan beban sistem.
Jadi, bagaimana untuk mengelakkan situasi ini? Kita boleh menggunakan kata kunci yang dipanggil "distinct" untuk mengalih keluar nilai pendua. Pernyataan pertanyaan menggunakan kata kunci "distinct" adalah seperti berikut:
SELECT DISTINCT * FROM students WHERE class IN (1,2,3,2);
Dengan cara ini, pelajar dalam kelas 2 tidak akan muncul berulang kali dalam hasil pertanyaan.
Selain menggunakan kata kunci "distinct" untuk mengelakkan nilai pendua, kita juga boleh mengelakkan situasi ini dengan mengalih keluar nilai pendua dalam senarai nilai. Contohnya:
SELECT * FROM students WHERE class IN (1,2,3) OR class=2;
Pernyataan di atas adalah bersamaan dengan pernyataan yang disebut sebelum ini, tetapi ia mengalih keluar nilai pendua dalam senarai kelas.
Perlu diambil perhatian bahawa penggunaan "IN" boleh menyebabkan isu prestasi apabila berurusan dengan senarai nilai yang mengandungi sejumlah besar nilai pendua. Pada masa ini, kita boleh mempertimbangkan untuk menggunakan pertanyaan "SERTAI", pertanyaan "WUJUD" atau jadual sementara dan bukannya pertanyaan "dalam". Penggunaan kaedah ini boleh meningkatkan kecekapan pertanyaan dengan berkesan dan mengelakkan kesan nilai pendua.
Ringkasnya, apabila menggunakan pertanyaan "dalam", kita harus memberi perhatian kepada kewujudan nilai pendua dan kemungkinan kesannya. Mengelakkan berlakunya nilai pendua boleh meningkatkan ketepatan dan kecekapan pertanyaan dan memastikan kestabilan sistem.
Atas ialah kandungan terperinci mysql dalam pertanyaan ulangi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!