Nếu bạn cần hai id tùy ý, hãy sử dụng min()
và 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 ;