यदि आपको दो मनमानी आईडी चाहिए, तो min()
. का उपयोग करें और 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 ;
नोट:आप LEFT JOIN
का उपयोग कर रहे हैं और फिर सेकंड . में एक कॉलम द्वारा एकत्र करना टेबल। यह आमतौर पर एक अच्छा विचार नहीं है, क्योंकि गैर-मिलान सभी को NULL
. में रखा जाता है समूह। इसके अलावा, आपका WHERE
क्लॉज LEFT JOIN
को बदल देता है एक INNER JOIN
. के लिए वैसे भी, तो मैंने इसे ठीक कर दिया है। WHERE
cat_name
. के आधार पर खंड आवश्यक हो भी सकता है और नहीं भी हमेशा NULL
होता है ।
यदि आप दो सबसे बड़े या सबसे छोटे चाहते हैं -- और उन्हें एक ही कॉलम में रख सकते हैं:
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 ;