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

Mysql chọn hàng khi giá trị cột thay đổi

MySQL user defined variables sẽ giúp bạn trong trường hợp này.

Mỗi khi bạn thấy một trạng thái mới, hãy gán 1 dưới dạng số hàng cho hàng tương ứng.

Và nếu bạn thấy cùng một trạng thái mà bạn đã thấy ở hàng trước đó thì hãy chỉ định một số hàng tăng dần để thay thế.

Bằng cách này, cuối cùng bạn có thể lọc các bản ghi có row number = 1 chỉ có. Các bản ghi cụ thể này thực sự cho thấy sự khác biệt so với hàng trước đó của chúng

SELECT 
*
FROM 
(
 SELECT 
  *,
  IF(@prevStatus = YT.status_1, @rn := @rn + 1,
    IF(@prevStatus := YT.status_1, @rn := 1, @rn := 1)
  ) AS rn
 FROM your_table YT
 CROSS JOIN 
 (
  SELECT @prevStatus := -1, @rn := 1
 ) AS var 
 ORDER BY YT.ID
) AS t
WHERE t.rn = 1
ORDER BY t.ID


  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 cách nào để bạn khắc phục lỗi tệp khóa MySQL không chính xác khi bạn không thể sửa chữa bảng?

  2. Thực thi tệp .sql bằng Python với MySQLdb

  3. Có Tập lệnh nâng cấp Spring Batch 3 cho MySQL không?

  4. Sequelize chỉ đọc datetime theo giờ UTC

  5. Làm cách nào để lưu trữ 1/01/1900 3:54:32 sáng trong MySQL?