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

MySQL агрегатни функции с LEFT JOIN

Тъй като имате филтъра за notes таблица в WHERE клауза JOIN действа като INNER JOIN , преместете го в JOIN условие:

SELECT
  jobs.*,
  MAX(notes.`timestamp`) AS complete_date
FROM jobs
LEFT JOIN notes 
  ON (jobs.id=notes.job_id)
  AND (notes.type="complete" OR notes.type IS NULL)
WHERE (jobs.status="complete" OR jobs.status="closed")
GROUP BY jobs.id
ORDER BY complete_date ASC;

Това може да стане и с помощта на подзаявка, така че да приложите филтъра за бележки вътре в подзаявката:

SELECT
  jobs.*,
  n.complete_date
FROM jobs
LEFT JOIN
(
    select job_id, MAX(`timestamp`) AS complete_date
    from notes 
    where (type="complete" OR type IS NULL)
    group by job_id
) n
  ON (jobs.id=n.job_id)
WHERE (jobs.status="complete" OR jobs.status="closed")
ORDER BY complete_date ASC



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Таблица, посочена два пъти в процедурата, как да коригирам?

  2. Дата между 2 други дати, без да се взема предвид годината

  3. Laravel eloquent получава най-често срещаната стойност в колона на база данни

  4. как да разбера дали колоната е първичен ключ с помощта на mysqli?

  5. Как да се свържете от пул от екземпляри на Google Compute Engine към Cloud SQL DB в същия проект?