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

Chọn khi thay đổi giá trị

Đây là một dạng vấn đề về khoảng cách và các đảo. Quần đảo là các hàng liền kề có cùng batchnum và bạn muốn điểm bắt đầu của mỗi hòn đảo.

Ở đây, cách tiếp cận đơn giản nhất có lẽ là lag() :

select *
from (
    select e.*,
        lag(batchnum) over(order by time) lag_batchnum
    from example e
) e
where not lag_batchnum <=> batchnum

Lưu ý rằng điều này yêu cầu MySQL 8.0. Trong các phiên bản trước, một phương án thay thế sử dụng truy vấn con tương quan:

select e.*
from example e
where not batchnum <=> (
    select e1.batchnum
    from example e1
    where e1.time < e.time
    order by e1.time desc
    limit 1
)

Đây là bản trình diễn trên DB Fiddle .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL CHAR () so với T-SQL CHAR ():Sự khác biệt là gì?

  2. Ví dụ về UNIX_TIMESTAMP () - MySQL

  3. Codeigniter Tham gia với nhiều điều kiện

  4. tomcat 7.0.42 pooling, hibernate 4.2, giải pháp kết nối tự động mysql rock solid

  5. Cập nhật Mysql với câu lệnh if