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

chọn ngày trước, mysql

Vì bạn chỉ cần một cột từ hàng "trước", bạn có thể thử một cái gì đó như sau:

SELECT
  dte,
  id,
  value,
  (
    SELECT value
    FROM atable
    WHERE id = t.id
      AND dte < t.dte
    ORDER BY dte DESC
    LIMIT 1
  ) AS previous_value
FROM atable t

Nếu bạn cần kéo thêm các thuộc tính "trước đó", đây là một cách tiếp cận phức tạp hơn:

SELECT
  t1.dte,
  t1.id,
  t1.value,
  t2.dte,
  t2.value,
  …
FROM atable t1
  LEFT JOIN atable t2 ON t1.id = t2.id AND t1.dte > t2.dte
  LEFT JOIN atable t3 ON t1.id = t3.id AND t1.dte > t3.dte AND t3.dte > t2.dte
WHERE t3.id IS NULL

Cách tiếp cận thứ hai sử dụng phép tự nối tam giác cũng như phép nối tự phản đối với bản thân. Về cơ bản, nó có thể được dịch như thế này:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tải lên hình ảnh, ajax, php, mysql

  2. Làm thế nào để giải quyết lớp Dialect không tìm thấy:org.hibernate.dialect.MYSQLDialect Exception?

  3. Truy vấn phân cấp trong MySQL

  4. sự khác biệt giữa '! =' và '<>' trong mysql là gì

  5. MySQL Đệ quy lấy tất cả con từ cha mẹ