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

MySQL - tìm sự khác biệt giữa các hàng của cùng một bảng

Đây là một giải pháp không có biến. Tôi giả sử bạn có dữ liệu initail của mình trong một bảng có tên là thetable .

SELECT date, time, ip,
    result - IFNULL( (
        SELECT MAX( result ) 
        FROM thetable
        WHERE ip = t1.ip
        AND ( date < t1.date
            OR date = t1.date AND time < t1.time )
    ) , 0) AS diff
FROM thetable AS t1
ORDER BY ip, date, time

Ở đây, chúng tôi nhận được giá trị trước đó với một lựa chọn phụ (kết quả result trong số các dấu thời gian trước đó từ cùng một ip ). IFNULL cho chúng tôi 0 nếu đây là giá trị đầu tiên, vì vậy kết quả ban đầu được hiển thị chính xác.

Tôi cũng khuyên bạn nên thêm chỉ mục sau vào thetable :

CREATE INDEX sort1 ON thetable (ip, date, time);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có Tập lệnh nâng cấp Spring Batch 3 cho MySQL không?

  2. Lưu ký tự Latinh serbian trong cơ sở dữ liệu

  3. Không thể chọn 'OK' trong mysql-apt-config [Ubuntu 14.04]

  4. Nhận tất cả các ký tự trước khoảng trắng trong MySQL

  5. Khóa ngoại nhiều cột trong MySQL?