Berbagi teknologi

MySQL: gunakan di atau di mana setelah kiri bergabung?

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Di MySQL,LEFT JOIN Digunakan untuk mengembalikan semua record dari tabel kiri (yaitu tabel di sebelah kiri kata kunci LEFT JOIN), meskipun tidak ada record yang cocok di tabel kanan. Untuk record-record yang tidak cocok pada tabel sebelah kanan, maka bagian tabel sebelah kanan dari result set akan diisi dengan NULL.tentangONDanWHEREPenggunaan klausa, mereka masukLEFT JOINPerannya berbeda-beda:

  • PADA Klausa: digunakan untuk menentukan kondisi penggabungan, yaitu menentukan record mana yang harus digabungkan.Saat Anda perlu menggabungkan catatan berdasarkan hubungan antara nilai bidang tertentu di tabel kiri dan kanan, kondisi ini harus dipenuhiON Nanti.jika diONNanti ada batasan bersyarat tambahan di tabel kanan, yang juga akan diterapkan saat menghubungkan, tetapi tidak akan mempengaruhi prinsip mengembalikan semua catatan dari tabel kiri.
  • DI MANA Klausa : digunakan untuk pasangan yang telah lulusJOIN Kumpulan hasil yang dihasilkan oleh operasi selanjutnya disaring.Ketika kondisi ditempatkanWHEREklausa, record-record yang tidak memenuhi syarat (baik dari tabel kiri atau tabel kanan) akan dihapus, yang dapat mempengaruhi niat awal untuk mengembalikan semua record dari tabel kiri, terutama saat menangani nilai NULL, Anda harus menjadi ekstra hati-hati.

Kasus khusus satu:

Misalkan kita mempunyai dua tabel, yang satu adalahemployees(meja karyawan), yang lainnya adalahdepartments(tabel departemen), kami ingin mengetahui semua karyawan dan nama departemennya, meskipun beberapa karyawan tidak ditugaskan ke departemen tertentu.

tabel karyawan:

pengenalnama
1Alice
2Bob
3Karol

tabel departemen:

pengenalnama
1SDM
2DIA
3Pemasaran

di dalam,employeesmejadepartment_idBidangnya bisa NULL, menunjukkan bahwa tidak ada departemen yang ditugaskan.

Contoh penggunaan AKTIF:

SELECT employees.name, departments.name AS department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;