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

MYSQL Nhóm theo cột với 2 hàng cho mỗi nhóm

Nếu bạn cần hai id tùy ý, hãy sử dụng min()max() :

SELECT c.`cat_name` , min(id), max(id)
FROM `info` i INNER JOIN
     `category` c
     ON i.`cat_id` = c.`cat_id`
WHERE c.`cat_name` IS NOT NULL
GROUP BY c`.`cat_name`
ORDER BY c.`cat_name` ASC ;

Lưu ý:Bạn đang sử dụng LEFT JOIN và sau đó tổng hợp theo một cột trong giây bàn. Điều này thường không phải là một ý kiến ​​hay, bởi vì tất cả các giá trị không khớp đều được đặt trong một NULL tập đoàn. Hơn nữa, WHERE của bạn mệnh đề biến LEFT JOIN đến một INNER JOIN Dù sao, vì vậy tôi đã sửa điều đó. WHERE mệnh đề có thể cần thiết hoặc không, tùy thuộc vào việc có hay không cat_name luôn luôn NULL .

Nếu bạn muốn hai cột lớn nhất hoặc nhỏ nhất - và có thể đặt chúng trong cùng một cột:

SELECT c.`cat_name`,
       substring_index(group_concat id order by id), ',', 2) as ids_2 
FROM `info` i INNER JOIN
     `category` c
     ON i.`cat_id` = c.`cat_id`
WHERE c.`cat_name` IS NOT NULL
GROUP BY c`.`cat_name`
ORDER BY c.`cat_name` ASC ;


  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ập lệnh Ajax Jquery đơn giản- Làm cách nào để lấy thông tin cho từng hàng trong bảng?

  2. Có bao nhiêu truy vấn là quá nhiều?

  3. Lỗi (Mã lỗi:1175) trong khi thực hiện lệnh cập nhật trên bảng bằng MySQL Workbench 5.2

  4. Ý nghĩa của Chọn bảng được tối ưu hóa trong MySQL Giải thích kế hoạch

  5. Sắp xếp thứ tự SQL theo thứ tự được chỉ định trong truy vấn