UNION, INTERSECT, EXCEPT
Gabungkan set hasil yang serasi dengan UNION, cari baris sepunya dengan INTERSECT dan cari perbezaan dengan EXCEPT.
UNION, INTERSECT, EXCEPT ialah pelajaran SQL Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran SQL Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.
Gambaran Keseluruhan Operasi Set
Tiga operator set menggabungkan set hasil baris demi baris:
UNION— baris dalam A ATAU B (tanpa pendua)INTERSECT— baris dalam A DAN BEXCEPT— baris dalam A tetapi BUKAN dalam B
UNION
Gabungkan dua set hasil sambil membuang pendua:
SELECT email FROM users
UNION
SELECT email FROM newsletter_subscribers;Keserasian Lajur
Kedua-dua pertanyaan mesti mempunyai bilangan lajur yang sama dan jenis yang serasi:
-- OK:
SELECT email FROM users UNION SELECT email FROM customers;
-- ERROR — different column count:
SELECT email FROM users UNION SELECT email, name FROM customers;INTERSECT
Baris yang muncul dalam kedua-dua pertanyaan:
SELECT product_id FROM orders WHERE user_id = 1
INTERSECT
SELECT product_id FROM orders WHERE user_id = 2;
-- Products bought by BOTH users.EXCEPT
Baris dalam pertanyaan pertama tetapi bukan dalam pertanyaan kedua:
SELECT product_id FROM products
EXCEPT
SELECT product_id FROM order_items;
-- Products never ordered.ORDER BY dengan Operator Set
ORDER BY digunakan pada keseluruhan hasil gabungan. Letakkannya di penghujung:
SELECT email FROM users
UNION
SELECT email FROM customers
ORDER BY email;Operator Set dan NULL
Bagi operasi set, dua NULL dianggap sama — UNION membuang penduanya, INTERSECT memadankannya. (Berbeza daripada NULL = NULL dalam WHERE.)
Operator Set pada Subpertanyaan
Letakkan subpertanyaan dalam kurungan untuk kejelasan dan untuk menggabungkannya dengan LIMIT:
(SELECT id FROM users ORDER BY created_at DESC LIMIT 10)
UNION
(SELECT id FROM users ORDER BY total DESC LIMIT 10);Keutamaan Operator
INTERSECT mempunyai keutamaan lebih tinggi daripada UNION/EXCEPT. Gunakan kurungan:
SELECT id FROM a
UNION
SELECT id FROM b
INTERSECT
SELECT id FROM c;
-- means: a UNION (b INTERSECT c)
-- Use parens to force order:
(SELECT id FROM a UNION SELECT id FROM b) INTERSECT SELECT id FROM c;Prestasi
UNION mengisih untuk membuang pendua. INTERSECT dan EXCEPT melakukan kerja yang serupa. Untuk set yang besar, utamakan corak JOIN/EXISTS dan gunakan operasi set hanya apabila maksudnya benar-benar sesuai.
SQL Standard berbanding Keunikan Vendor
Ketiga-tiganya wujud dalam PostgreSQL. MySQL hanya menambah INTERSECT dan EXCEPT dalam versi 8.0.31; versi lebih lama menirunya dengan JOIN/NOT IN.
Imbas Kembali
Operator set menyatakan OR/AND/MINUS pada baris.
- UNION — gabung + buang pendua
- INTERSECT — baris sepunya
- EXCEPT — A tolak B
Semakan Pantas
Operator set yang manakah mengembalikan "baris dalam A yang BUKAN dalam B"?
Pelajari SQL dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 46
- Pelajaran
- 183
Soalan Lazim
Adakah pelajaran “UNION, INTERSECT, EXCEPT” percuma?
Ya — teks penuh “UNION, INTERSECT, EXCEPT” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus SQL Academy, tingkat taraf kepada CoddyKit PRO. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “UNION, INTERSECT, EXCEPT”?
Gabungkan set hasil yang serasi dengan UNION, cari baris sepunya dengan INTERSECT dan cari perbezaan dengan EXCEPT. Anda berlatih SQL Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan SQL Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran SQL Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “UNION, INTERSECT, EXCEPT” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran SQL Academy ini?
Ya. Setiap pelajaran SQL Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- UNION, INTERSECT, EXCEPT
- UNION ALL berbanding UNION (Kos Pembuangan Pendua)
- Ungkapan CASE dan Pertanyaan Pangsi
- Corak Crosstab (PostgreSQL crosstab())