Si necesita dos identificadores arbitrarios, utilice min()
y 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 ;
Nota:está utilizando un LEFT JOIN
y luego agregando por una columna en el segundo mesa. Por lo general, esto no es una buena idea, porque las no coincidencias se colocan en un NULL
grupo. Además, su WHERE
cláusula convierte el LEFT JOIN
a una INNER JOIN
de todos modos, así que he arreglado eso. El WHERE
la cláusula puede ser necesaria o no, dependiendo de si cat_name
es siempre NULL
.
Si quiere los dos más grandes o los más pequeños, y puede soportar tenerlos en la misma columna:
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 ;