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

mysql списък с дати с брой, дори ако няма данни за конкретна дата

Ако приемем вашия postid s са съседни във вашата таблица, тогава тази заявка:

SELECT
  DATE_FORMAT(b.date, '%Y-%m-%d') date,
  COUNT(c.postid)
FROM
(
  SELECT
    (SELECT MAX(date) FROM ex) + INTERVAL 3 DAY - INTERVAL a.postid DAY AS date
  FROM
    ex a
) b
LEFT JOIN
  ex c ON c.date = b.date
GROUP BY
  b.date
ORDER BY
  b.date

произвежда:

date    COUNT(c.postid)
2012-01-01  2
2012-01-02  2
2012-01-03  0
2012-01-04  2
2012-01-05  1
2012-01-06  0
2012-01-07  0

Вижте http://sqlfiddle.com/#!2/2cf8d/2

Ако вашият postid s не са съседни, тогава можете да използвате ids таблица с последователни идентификатори:

SELECT
  DATE_FORMAT(b.date, '%Y-%m-%d') date,
  COUNT(c.postid)
FROM
(
  SELECT
    (SELECT MAX(date) FROM ex) + INTERVAL 3 DAY - INTERVAL a.id DAY AS date
  FROM
    ids a
) b
LEFT JOIN
  ex c ON c.date = b.date
GROUP BY
  b.date
ORDER BY
  b.date DESC
LIMIT 7

Вижте http://sqlfiddle.com/#!2/13035/1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. HQL генерира непълно „кръстосано присъединяване“ при executeUpdate

  2. Как мога да проверя дали MySQL и Tomcat работят?

  3. Mysql поръчайте артикули до най-новата от 2 дати

  4. Как да направите автоматично увеличение на първичния ключ на MySQL таблицата с някакъв префикс

  5. комбиниране на mysql query SUM() резултат с помощта на вътрешно присъединяване