いいえ、これは正しいアプローチではありません。
あなたはこのような質問について話していると思います:
SELECT product.*, MIN(qty)
FROM product
GROUP BY
type
ORDER BY
qty
ここで行っているのは、MySQLを使用していることです。 GROUP BYで集約されていない/グループ化されていない列を選択できるようにするの拡張機能 クエリ。
これは主に、JOINの両方を含むクエリで使用されます およびGROUP BY PRIMARY KEYで 、このように:
SELECT order.id, order.customer, SUM(price)
FROM order
JOIN orderline
ON orderline.order_id = order.id
GROUP BY
order.id
ここでは、order.customer グループ化も集約もされていませんが、order.idでグループ化されているためです 、各グループ内で同じ値を持つことが保証されています。
あなたの場合、qtyのすべての値 グループ内で異なる値を持っています。
グループ内のどのレコードからエンジンが値を取得するかは保証されません。
これを行う必要があります:
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
)
product (type, qty, id)にインデックスを作成する場合 、このクエリは高速に機能します。