Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menyoal Secara Cekap untuk Pasangan Tuple dalam Klausa IN SQL?

Bagaimanakah Saya Boleh Menyoal Secara Cekap untuk Pasangan Tuple dalam Klausa IN SQL?

Patricia Arquette
Lepaskan: 2024-12-31 15:29:14
asal
304 orang telah melayarinya

How Can I Efficiently Query for Tuple Pairs in SQL's IN Clause?

Menggunakan Tuple dalam Klausa SQL IN: Alternatif kepada Penggabungan Rentetan

Dalam SQL, klausa IN membenarkan anda membandingkan medan dengan set daripada nilai. Walau bagaimanapun, pengendalian tupel yang mengandungi berbilang nilai boleh menimbulkan cabaran.

Masalahnya

Pertimbangkan jadual dengan medan group_id dan group_type, dan anda ingin menanyakan rekod dengan tupel tertentu pasangan, seperti:

SELECT *
FROM mytable
WHERE (group_id, group_type) IN (("1234-567", 2), ("4321-765", 3), ("1111-222", 5))
Salin selepas log masuk

Penyelesaian yang dicadangkan untuk menggunakan penggabungan rentetan, seperti di bawah, adalah tidak cekap untuk jadual besar:

SELECT *
FROM mytable
WHERE group_id + STR(group_type, 1) IN ("1234-5672", "4321-7653", "1111-2225")
Salin selepas log masuk

Penyelesaian SQL Standard

Penyelesaian yang lebih cekap ialah menggunakan sintaks Standard SQL-92 untuk tupel dalam klausa IN dengan kata kunci VALUES:

SELECT *
FROM mytable
WHERE (group_id, group_type) IN (
    VALUES ('1234-567', 2), 
           ('4321-765', 3), 
           ('1111-222', 5)
);
Salin selepas log masuk

Sintaks ini disokong oleh beberapa produk SQL, termasuk PostgreSQL dan SQLite.

Microsoft SQL Server Note

Pada masa penulisan (SQL Server 2022), sintaks ini tidak disokong dalam Microsoft SQL Server.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyoal Secara Cekap untuk Pasangan Tuple dalam Klausa IN SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan