Nej, detta är inte rätt tillvägagångssätt.
Jag tror att du talar om en fråga som denna:
SELECT product.*, MIN(qty)
FROM product
GROUP BY
type
ORDER BY
qty
Det du gör här är att använda MySQL s tillägg som låter dig välja oaggregerade/ogrupperade kolumner i en GROUP BY fråga.
Detta används mest i frågor som innehåller både en JOIN och en GROUP BY på en PRIMARY KEY , så här:
SELECT order.id, order.customer, SUM(price)
FROM order
JOIN orderline
ON orderline.order_id = order.id
GROUP BY
order.id
Här, order.customer är varken grupperad eller aggregerad, men eftersom du grupperar på order.id , den har garanterat samma värde inom varje grupp.
I ditt fall, alla värden på qty har olika värderingar inom gruppen.
Det är inte garanterat från vilken post inom gruppen motorn kommer att ta värdet.
Du bör göra så här:
SELECT p.*
FROM (
SELECT DISTINCT type
FROM product p
) pd
JOIN p
ON p.id =
(
SELECT pi.id
FROM product pi
WHERE pi.type = pd.type
ORDER BY
type, qty, id
LIMIT 1
)
Om du skapar ett index på product (type, qty, id) , kommer den här frågan att fungera snabbt.