Jeśli potrzebujesz dwóch dowolnych identyfikatorów, użyj min() i 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 ;
Uwaga:używasz LEFT JOIN a następnie agregowanie według kolumny w drugiej stół. Zwykle nie jest to dobry pomysł, ponieważ wszystkie niedopasowane elementy są umieszczane w NULL Grupa. Ponadto Twój WHERE klauzula zmienia LEFT JOIN do INNER JOIN w każdym razie, więc to naprawiłem. WHERE klauzula może być konieczna lub nie, w zależności od tego, czy cat_name jest zawsze NULL .
Jeśli chcesz mieć dwie największe lub najmniejsze -- i możesz mieć je w tej samej kolumnie:
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 ;