Subkueri dengan semi join dan anti join

Menggabungkan Data di SQL

Maham Faisal Khan

Senior Content Developer, DataCamp

Panggilan untuk semua join

Diagram untuk INNER JOINpada id field

Sebuah diagram yang menampilkan dua tabel: left_table dan right_table. Hasil penggabungan kedua kueri ditampilkan di sebelah kanan, hanya menampilkan catatan yang cocok pada kolom id untuk kedua tabel.

Menggabungkan Data di SQL

Additive join

SELECT *
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id;
Menggabungkan Data di SQL

Additive join

Diagram yang menjelaskan additive join. Di sisi kiri, dua tabel, left_table dan right_table, ditampilkan. Di sisi kanan, ditampilkan hasil dari INNER JOIN penggunaan sebuah kolom id pada dua tabel. Bidang dengan nama yang berbeda ditambahkan dengan nama aslinya. Karena bidang tanggal muncul di kedua tabel, maka bidang tersebut ditambahkan dua kali.

Menggabungkan Data di SQL

Semi join

Semi join memilih catatan dalam tabel pertama di mana kondisi terpenuhi di tabel kedua.

Sebuah diagram yang menunjukkan dua tabel, left_table dan right_table, yang akan digunakan untuk mendemonstrasikan semi join. left_table berisi dua kolom, id dan kolom 1. right_table hanya berisi satu kolom, kolom 2.

Menggabungkan Data di SQL

Semi join

Sebuah diagram yang menunjukkan dua tabel, left_table dan right_table, yang digunakan untuk mendemonstrasikan semi join. Kolom 2 akan digunakan untuk menyaring kolom 1. Catatan dalam tabel kiri (left_table) di mana kolom 1 tidak menemukan kecocokan di kolom 2 telah diburamkan.

Menggabungkan Data di SQL

Semi join

Sebuah diagram yang menunjukkan dua tabel, left_table dan right_table. Hasil dari operasi semi join pada kedua tabel ditampilkan di sebelah kanan. Hanya catatan dalam tabel kiri (left_table) di mana kolom 1 (col1) cocok dengan kolom 2 (col2) yang telah dikembalikan. Ini sesuai dengan id 2 dan 3.

Menggabungkan Data di SQL

Mulai acara semi-join kami

SELECT country, continent, president
FROM presidents;
| country  | continent     | president               |
| -------- | ------------- | ----------------------- |
| Egypt    | Africa        | Abdel Fattah el-Sisi    |
| Portugal | Europe        | Marcelo Rebelo de Sousa | 
| USA      | North America | Joe Biden               |
| Uruguay  | South America | Luis Lacalle Pou        |
| Pakistan | Asia          | Asif Ali Zardari        |
| Chile    | South America | Gabriel Boric           |
| India    | Asia          | Droupadi Murmu          |
Menggabungkan Data di SQL

Membangun atas semi join kami

SELECT country
FROM states
WHERE indep_year < 1800;
|----------|
| country  |
|----------|
| Portugal |
| Spain    |
|----------|
Menggabungkan Data di SQL

Selesaikan sambungan semi (pengantar tentang subkueri)

SELECT president, country, continent
FROM presidents
WHERE country IN
    (SELECT country
     FROM states
     WHERE indep_year < 1800);
|-------------------------|-----------|-------------|
| president               | country   | continent   |
|-------------------------|-----------|-------------|
| Marcelo Rebelo de Sousa | Portugal  | Europe      |
|-------------------------|-----------|-------------|
Menggabungkan Data di SQL

Anti join

Sebuah diagram yang menunjukkan dua tabel, left_table dan right_table, yang digunakan untuk mendemonstrasikan anti join. Kolom col2 akan digunakan untuk menyaring kolom col1. Catatan dalam tabel kiri (left_table) di mana kolom 1 (col1) tidak memiliki pasangan yang cocok di kolom 2 col2 telahNOT diburamkan.

Menggabungkan Data di SQL

Anti join

Sebuah diagram yang menunjukkan dua tabel, left_table dan right_table. Hasil dari operasi anti join pada kedua tabel ditampilkan di sebelah kanan. Hanya catatan di left_table di mana kolom 1 tidak memiliki pasangan yang cocok di kolom 2 yang telah dikembalikan. Ini sesuai dengan id 1 dan 4.

Menggabungkan Data di SQL

Sebuah anti join dengan presiden

SELECT country, president
FROM presidents
WHERE continent LIKE '%America' 
    AND country NOT IN
        (SELECT country
         FROM states
         WHERE indep_year < 1800);
| country  |  president       |
| -------- | ---------------- | 
| Uruguay  | Luis Lacalle Pou |
| Chile    | Gabriel Boric    |
Menggabungkan Data di SQL

Ayo berlatih!

Menggabungkan Data di SQL

Preparing Video For Download...