Hvis du har brug for to vilkårlige id'er, så brug min()
og 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 ;
Bemærk:Du bruger en LEFT JOIN
og derefter aggregere efter en kolonne i anden bord. Dette er normalt ikke en god idé, fordi ikke-matches alle placeres i en NULL
gruppe. Ydermere er din WHERE
klausul ændrer LEFT JOIN
til en INNER JOIN
i hvert fald, så det har jeg rettet. WHERE
klausul kan være nødvendig eller ikke, afhængigt af om cat_name
eller ej er nogensinde NULL
.
Hvis du vil have de to største eller mindste -- og kan tåle at have dem i samme kolonne:
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 ;