Mencari Setara untuk MySQL's Intersect
Dalam SQL, pengendali INTERSECT mendapatkan semula nilai berbeza yang muncul dalam kedua-dua pertanyaan yang ditentukan. Walau bagaimanapun, MySQL tidak menyokong INTERSECT secara asli.
Alternatif dalam MySQL
Untuk mencapai hasil yang serupa dalam MySQL, seseorang boleh menggunakan:
Contoh
Pertimbangkan pertanyaan berikut dalam sistem pengurusan pangkalan data lain yang menggunakan INTERSECT:
(select * from emovis_reporting where (id=3 and cut_name= '全プロセス' and cut_name='恐慌') ) intersect ( select * from emovis_reporting where (id=3) and ( cut_name='全プロセス' or cut_name='恐慌') )
MySQL Alternatif menggunakan INNER JOIN:
SELECT DISTINCT * FROM emovis_reporting e1 INNER JOIN emovis_reporting e2 ON (e1.id = e2.id) AND (e1.cut_name = e2.cut_name) WHERE e1.id = 3 AND (e1.cut_name = '全プロセス' OR e1.cut_name = '恐慌');
MySQL Alternatif menggunakan WHERE ... IN:
SELECT DISTINCT * FROM emovis_reporting WHERE (id = 3) AND (cut_name IN ('全プロセス', '恐慌'));
Alternatif MySQL ini mengembalikan nilai berbeza yang memenuhi syarat yang dinyatakan dalam kedua-dua subkueri. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa lajur id terlibat dalam pertanyaan khusus ini, yang akan menghalang pendua daripada dikembalikan. Untuk pertanyaan tanpa pengecam unik, menggunakan DISTINCT dalam pertanyaan luar mungkin diperlukan untuk memastikan hasil yang unik.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Meniru Fungsi `INTERSECT` MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!