Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengelakkan ORA-01795: Alternatif kepada Klausa Berbilang IN?

Bagaimana untuk Mengelakkan ORA-01795: Alternatif kepada Klausa Berbilang IN?

Susan Sarandon
Susan Sarandonasal
2025-01-04 15:45:39866semak imbas

How to Avoid ORA-01795:  Alternatives to Multiple IN Clauses?

Pendekatan Alternatif untuk Mengendalikan "ORA-01795: Ungkapan Maksimum dalam Ralat Senarai"

Apabila menghadapi "ORA-01795: nombor maksimum ungkapan dalam senarai adalah 1000 ralat," nasihat standard adalah untuk mengubah suai pertanyaan dan memasukkan berbilang klausa IN seperti yang dilihat dalam jawapan. Walau bagaimanapun, mari kita teroka kaedah alternatif lain untuk mengatasi had ini.

Satu alternatif ialah menggunakan jadual sementara, seperti yang dilihat dalam pertanyaan berikut:

CREATE TABLE temp_table AS
SELECT DISTINCT name
FROM table1
WHERE name IN ('value1', 'value2', ..., 'value10000+');

SELECT field1, field2, field3
FROM table1
WHERE name IN (SELECT name FROM temp_table);

DROP TABLE temp_table;

Kaedah ini mempunyai kelebihan membenarkan keseluruhan set nilai digunakan dalam satu klausa IN, tanpa perlu membahagikannya kepada beberapa klausa. Selain itu, ia boleh diguna semula, kerana jadual sementara boleh disimpan untuk pertanyaan pada masa hadapan.

Walaupun kedua-dua pendekatan berkesan dalam menyelesaikan ralat "ORA-01795", pilihan di antara mereka bergantung pada keperluan dan kekangan khusus bagi persekitaran pangkalan data.

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan ORA-01795: Alternatif kepada Klausa Berbilang IN?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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