Ако имате нужда от два произволни идентификатора, използвайте min()
и 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 ;
Забележка:Използвате LEFT JOIN
и след това агрегиране по колона в втората маса. Това обикновено не е добра идея, защото всички несъвпадения се поставят в NULL
група. Освен това вашият WHERE
клаузата обръща LEFT JOIN
към INNER JOIN
така или иначе, така че го оправих. WHERE
клауза може или не е необходима, в зависимост от това дали cat_name
винаги е NULL
.
Ако искате двете най-големи или най-малки - и можете да ги понесете в една и съща колона:
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 ;