Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL bergabung dengan klausa where

Anda harus memasukkannya ke dalam join klausa, bukan where :

SELECT *
FROM categories
LEFT JOIN user_category_subscriptions ON 
    user_category_subscriptions.category_id = categories.category_id
    and user_category_subscriptions.user_id =1

Lihat, dengan inner join , menempatkan klausa di join atau where setara. Namun, dengan outer join , mereka sangat berbeda.

Sebagai join kondisi, Anda menentukan rowset yang akan Anda gabungkan ke tabel. Ini berarti mengevaluasi user_id = 1 pertama, dan mengambil subset dari user_category_subscriptions dengan user_id dari 1 untuk bergabung ke semua baris di categories . Ini akan memberi Anda semua baris di categories , sedangkan hanya categories bahwa pengguna tertentu telah berlangganan akan memiliki informasi apa pun di user_category_subscriptions kolom. Tentu saja, semua categories lainnya akan diisi dengan null di user_category_subscriptions kolom.

Sebaliknya, sebuah where klausa bergabung, dan lalu mengurangi baris. Jadi, ini melakukan semua gabungan dan kemudian menghilangkan semua baris di mana user_id tidak sama dengan 1 . Anda memiliki cara yang tidak efisien untuk mendapatkan inner join .

Semoga membantu!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JSON_TYPE() – Dapatkan Jenis Nilai JSON di MySQL

  2. Cara mengekspor data dari SQL Server 2005 ke MySQL

  3. Menggunakan utas untuk membuat permintaan basis data

  4. Panduan Merancang Database Untuk Sistem Pemesanan Restoran Di MySQL

  5. Bagaimana cara menghapus semua catatan duplikat dalam tabel MySQL tanpa tabel temp