Se avete bisogno di due ID arbitrarie, quindi utilizzare min()
e 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: Si utilizza a LEFT JOIN
e quindi aggregando per una colonna nel seconda tabella. Di solito non è una buona idea, perché le non-partite sono tutte collocate in un gruppo NULL
. Inoltre, la tua clausola WHERE
trasforma lo LEFT JOIN
in uno INNER JOIN
, quindi l'ho risolto. La clausola WHERE
potrebbe essere o meno necessaria, a seconda che lo cat_name
sia o meno NULL
.
Se si desidera che i due più grandi o più piccoli - e può sopportare di averli nella stessa colonna:
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 ;
fonte
2015-08-19 10:54:29
Si prega di fornire i dati del campione e risultato desiderato. – RubahMalam
'SELEZIONARE GROUP_CONCAT (info.id), GROUP_CONCAT (category.id), ...' – raina77ow
Quale "2 righe" vuoi? Qualsiasi due file? Le due righe con gli ID più alti, che sembra essere ciò che mostra il tuo output? –