Mysql
 sql >> база данни >  >> RDS >> Mysql

ляво присъединяване с условие за дясна таблица в mysql

Приемаме PRICES.date е тип данни DATETIME, използвайте:

   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

Използвах функцията DATE за да премахнете частта от времето, защото CURRENT_DATE няма да включва частта от времето, докато записите DATETIME ще включват.

В този пример date критериите се прилагат преди JOIN е направено. Това е като извлечена таблица, филтрираща информацията, преди да се направи JOIN - което ще даде различни резултати, отколкото ако критериите са посочени в клаузата WHERE.

За да получите списък с продукти и цени за утре, използвайте:

   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)

Справка:

Ако искате и днешните, и утрешните цени в една заявка, използвайте:

   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. Как да комбинирате два реда и да изчислите разликата във времето между две стойности на времеви отпечатъци в MySQL?

  2. как да се свържете с mysql сървър с помощта на командния ред:грешка

  3. Как да предадете изрази за условия към mySql заявка

  4. Дзен количка:Бих искал да потърся от конкретна категория нейното име на продукти, цена, изображение, описание и атрибути

  5. Не може да се публикува текст в MySQL с помощта на Insert Into