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 ;