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

Nhóm các giá trị liên tiếp trong MySQL và thêm id vào các nhóm như vậy

SELECT language,id,g
FROM (
  SELECT language,id,
    CASE WHEN [email protected]+1 THEN @n ELSE @n:[email protected]+1 END AS g,
    @lastid := id As b
  FROM
    t, (SELECT @n:=0) r
  ORDER BY
    id
) s

CHỈNH SỬA

Trong trường hợp bạn chỉ muốn 4 cho mỗi nhóm, hãy thêm một biến số hàng:

SELECT language,id,g,rn
FROM (
  SELECT language,id,
    CASE WHEN [email protected]+1 THEN @n ELSE @n:[email protected]+1 END AS g,
   @rn := IF(@lastid+1 = id, @rn + 1, 1) AS rn,
    @lastid := id As dt
  FROM
    t, (SELECT @n:=0) r
  ORDER BY
    id
) s
Where rn <=4

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. Làm cách nào để đặt công cụ lưu trữ mặc định được sử dụng bởi MySQL?

  2. Xuất một bảng MySQL lớn dưới dạng nhiều tệp nhỏ hơn

  3. MySQL Group_Concat () so với T-SQL String_Agg ()

  4. Tại sao tôi cần thoát kép (sử dụng 4 \) để tìm dấu gạch chéo ngược (\) trong SQL thuần túy?

  5. Chọn các giá trị đáp ứng các điều kiện khác nhau trên các hàng khác nhau?