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

Membatasi gabungan kiri untuk mengembalikan satu hasil?

Kesalahannya jelas -- Anda hanya perlu membuat alias untuk subkueri setelah ) penutupnya dan gunakan di ON . Anda klausa karena setiap tabel, diturunkan atau nyata, harus memiliki pengenalnya sendiri. Kemudian, Anda harus menyertakan movie_id dalam daftar pilih subquery untuk dapat bergabung di dalamnya. Karena subquery sudah menyertakan WHERE popularity = 0 , Anda tidak perlu memasukkannya ke dalam ON . gabungan klausa.

LEFT JOIN (
  SELECT
    movie_id, 
    movie_name 
  FROM movies 
  WHERE popularity = 0
  ORDER BY movie_name
  LIMIT 1
) the_alias ON t1.movie_id = the_alias.movie_id

Jika Anda menggunakan salah satu kolom ini di bagian luar SELECT , referensikan melalui the_alias.movie_name misalnya.

Perbarui setelah memahami persyaratan dengan lebih baik:

Untuk mendapatkan satu per grup untuk bergabung, Anda dapat menggunakan MAX() aggregate agregat atau MIN() pada movie_id dan mengelompokkannya dalam subquery. Tidak ada subkueri LIMIT kemudian diperlukan -- Anda akan menerima movie_id pertama per nama denganMIN() atau yang terakhir dengan MAX() .

LEFT JOIN (
  SELECT
    movie_name,
    MIN(movie_id) AS movie_id
  FROM movies
  WHERE popularity = 0
  GROUP BY movie_name
) the_alias ON t1.movie_id = the_alias.movie_id


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tipe Data ENUM (Enumeration) di MySQL:12 Fakta Teratas dan Tips Berguna

  2. Cari lokasi terdekat dengan Zip/Postal Code?

  3. Apa praktik terbaik untuk menyimpan data khusus untuk Wordpress

  4. Pembagian dalam kueri MySQL

  5. Berapakah nomor ID terbesar yang dapat dihasilkan oleh peningkatan otomatis di mysql