Jika Anda membutuhkan dua id arbitrer, gunakan min()
dan 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 ;
Catatan:Anda menggunakan LEFT JOIN
dan kemudian menggabungkan dengan kolom di kedua meja. Ini biasanya bukan ide yang baik, karena semua yang tidak cocok ditempatkan dalam NULL
kelompok. Selanjutnya, WHERE
klausa mengubah LEFT JOIN
ke INNER JOIN
lagi pula, jadi saya sudah memperbaikinya. WHERE
klausa mungkin diperlukan atau tidak, tergantung pada apakah cat_name
. atau tidak pernah NULL
.
Jika Anda menginginkan dua yang terbesar atau terkecil -- dan dapat menempatkannya di kolom yang sama:
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 ;