Om du behöver två godtyckliga ID, använd sedan min() och 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 ;
Obs! Du använder en LEFT JOIN och sedan aggregeras med en kolumn i andra tabell. Detta är vanligtvis inte en bra idé, eftersom alla icke-matchningar placeras i en NULL grupp. Dessutom, din WHERE sats förvandlar LEFT JOIN till en INNER JOIN i alla fall, så det har jag fixat. WHERE klausul kan vara nödvändig eller inte, beroende på om cat_name eller inte är någonsin NULL .
Om du vill ha de två största eller minsta -- och orkar ha dem i samma kolumn:
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 ;