Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để lấp đầy khoảng trống ngày trong MySQL?

Bạn sẽ cần tạo một bảng trợ giúp và điền vào đó tất cả các ngày từ start đến end , sau đó chỉ cần LEFT JOIN với bảng đó:

SELECT  d.dt AS date,
        COUNT(*) AS total,
        SUM(attitude = 'positive') AS positive,
        SUM(attitude = 'neutral') AS neutral,
        SUM(attitude = 'negative') AS negative
FROM    dates d
LEFT JOIN
        messages m
ON      m.posted_at >= d.dt
        AND m.posted_at < d.dt + INTERVAL 1 DAYS
        AND spam = 0
        AND duplicate = 0
        AND ignore = 0
GROUP BY
        d.dt
ORDER BY
        d.dt

Về cơ bản, những gì bạn cần ở đây là một nguồn hàng giả.

MySQL là hệ thống chính duy nhất thiếu cách tạo ra nó.

PostgreSQL triển khai một chức năng đặc biệt generate_series để làm điều đó, trong khi OracleSQL Server có thể sử dụng đệ quy (CONNECT BYCTE đệ quy s, theo đó).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để biết khi nào truy vấn được thực thi thành công trong PHP PDO?

  2. PostgreSQL so với MySQL

  3. Từ khóa SEPARATOR không hoạt động bình thường trong Hibernate Formula

  4. Cách nhập dữ liệu từ tệp văn bản vào cơ sở dữ liệu mysql

  5. Cài đặt MySQL trên máy Mac