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

gabung kiri dengan kondisi tabel kanan di mysql

Dengan asumsi PRICES.date adalah tipe data DATETIME, gunakan:

   SELECT pd.id, 
          pd.name, 
          pr.price
     FROM PRODUCTS pd
LEFT JOIN PRICES pr ON pr.id = pd.id
                   AND DATE(pr.date) = CURRENT_DATE

Saya menggunakan fungsi TANGGAL untuk menghapus bagian waktu, karena CURRENT_DATE tidak akan menyertakan bagian waktu sedangkan catatan DATETIME akan.

Dalam contoh ini, date kriteria sedang diterapkan sebelum JOIN dibuat. Ini seperti tabel turunan, menyaring informasi sebelum JOIN dibuat -- yang akan menghasilkan hasil yang berbeda dibandingkan jika kriteria ditentukan dalam klausa WHERE.

Untuk mendapatkan daftar produk dan harga untuk besok, gunakan:

   SELECT pd.id, 
          pd.name, 
          pr.price
     FROM PRODUCTS pd
LEFT JOIN PRICES pr ON pr.id = pd.id
                   AND DATE(pr.date) = DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY)

Referensi:

Jika Anda ingin harga hari ini dan besok dalam satu kueri, gunakan:

   SELECT pd.id, 
          pd.name, 
          pr1.price AS price_today,
          pr2.price AS price_tomorrow
     FROM PRODUCTS pd
LEFT JOIN PRICES pr1 ON pr1.id = pd.id
                   AND DATE(pr1.date) = CURRENT_DATE
LEFT JOIN PRICES pr2 ON pr2.id = pd.id
                   AND DATE(pr2.date) = DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kehabisan memori (dialokasikan 50855936) (mencoba mengalokasikan 50331646 byte)

  2. Indeks multi-bahasa dengan Laravel Scout dan Algolia

  3. Cara memisahkan catatan untuk mendapatkan jumlahnya

  4. Cara mendapatkan perbedaan antara dua tanggal dibulatkan menjadi jam

  5. Bagaimana saya bisa melihat string perintah saat menggunakan parameter MySqlCommand?