Om du behöver två godtyckliga ID, använd sedan min()
och 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 ;
Obs! Du använder en LEFT JOIN
och sedan aggregeras med en kolumn i andra tabell. Detta är vanligtvis inte en bra idé, eftersom alla icke-matchningar placeras i en NULL
grupp. Dessutom, din WHERE
sats förvandlar LEFT JOIN
till en INNER JOIN
i alla fall, så det har jag fixat. WHERE
klausul kan vara nödvändig eller inte, beroende på om cat_name
eller inte är någonsin NULL
.
Om du vill ha de två största eller minsta -- och orkar ha dem i samma kolumn:
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 ;