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 ;