Pokud potřebujete dvě libovolná ID, použijte min() a 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 ;
Poznámka:Používáte LEFT JOIN a poté agregaci podle sloupce v druhé stůl. To obvykle není dobrý nápad, protože neshody jsou všechny umístěny v NULL skupina. Dále vaše WHERE klauzule otočí LEFT JOIN do INNER JOIN každopádně, tak jsem to opravil. WHERE klauzule může nebo nemusí být nezbytná v závislosti na tom, zda cat_name je vždy NULL .
Pokud chcete dva největší nebo nejmenší -- a snesete je mít ve stejném sloupci:
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 ;