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

Chọn hàng 'tiếp theo' đưa ra các tiêu chí cụ thể trong MySQL

Truy vấn ban đầu của bạn khá thông minh. Đây là một cách tiếp cận hơi khác. Nó lấy khu vực tiếp theo trong một truy vấn con (sử dụng một truy vấn con tương quan như trong ví dụ của bạn). Sau đó, nó sẽ đếm các hàng có các điều kiện là đúng:

select sum(case when area = 'Front' and nextarea = 'Back' then 1 else 0 end)
from (SELECT t1.*,
             (SELECT t2.area 
              FROM table t2 
              where t2.order > t1.order
              order by t2.order
              limit 1
             ) as nextarea 
FROM table t1;

Truy vấn này đắt hơn truy vấn của bạn. Bạn đã có thể sử dụng một điều kiện bình đẳng tốt đẹp trên order cột. Ở đây, cần sắp xếp với limit để nhận giá trị tiếp theo. Chỉ mục tổng hợp trên (order, area) sẽ giúp hiệu suất.




  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ừ cơ số 10 đến cơ số 26 chỉ với các chữ cái để 26 sẽ là aa

  2. Thay đổi định dạng hiển thị của trường ngày và giờ trong MySQL PHP

  3. Tại sao MySQL báo lỗi cú pháp trên FULL OUTER JOIN?

  4. Thứ tự các điều kiện trong mệnh đề WHERE có ảnh hưởng đến hiệu suất của MySQL không?

  5. Thực hiện tăng tự động điền vào số đã xóa trước đó