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

Поръчайте в рамките на група от?

SELECT  c.*, p.*
FROM    clients AS c
JOIN    programs AS p
ON      p.id = 
        (
        SELECT  pi.id
        FROM    programs AS pi
        WHERE   pi.client_id = c.id
        ORDER BY
                pi.close_date=0 DESC, pi.close_date DESC
        LIMIT 1
        )

Благодаря трябва да отидете на @Quassnoi . Вижте отговора му в подобен (но по-сложен) въпрос:mysql-group-by-to-display-latest-result

Ако актуализирате programs таблица и задайте close_date за всички записи е нула до close_date='9999-12-31' , след това вашият ORDER BY ще бъде по-просто (и цялата заявка по-бърза с подходящи индекси):

        ORDER BY
                pi.close_date DESC


  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 Database и да го поставите в Amazon s3 всяка вечер, като използвате раздела Cron?

  2. Как да използвам GROUP BY за конкатенация на низове в MySQL?

  3. Mysql функция, връщаща стойност от заявка

  4. Попълнете полето за избор от базата данни с помощта на jQuery

  5. Как работи функцията SUBSTR() в MySQL