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

Mysql group_concat giới hạn hàng trong nhóm

MySQL không làm cho loại truy vấn này dễ dàng, nhưng một giải pháp (phải thừa nhận là không hay lắm) là sử dụng một biến để cung cấp cho mỗi hàng một số thứ tự cho mỗi đích và chỉ nhóm theo số nguyên của hàng chia cho 2 để có hai số trong mỗi nhóm;

SELECT dest, GROUP_CONCAT(port ORDER BY rank) ports
FROM (
  SELECT dest, port, ( 
      CASE dest WHEN @curDest 
                THEN @curRow := @curRow + 1 
                ELSE @curRow := 1 AND @curDest := dest END) rank
  FROM tb_port a
  JOIN tb_rule c ON a.id = c.id_port
  JOIN tb_dest b ON b.id = c.id_dest, 
    (SELECT @curRow := 0, @curDest := '') r
  ORDER BY dest
) z
GROUP BY FLOOR(rank/2),dest
ORDER BY dest, MIN(rank)

SQLfiddle để kiểm tra .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. chọn một số cụ thể làm giá trị cột trong truy vấn

  2. đếm không có nhóm

  3. Cách chèn Emoji (ký tự UTF8 4 Byte) vào MySQL <5.5

  4. MySQL:Không chèn một hàng mới nếu các hàng được xác định giống nhau

  5. Điền hộp chọn từ cơ sở dữ liệu bằng jQuery