いいえ、これは正しいアプローチではありません。
あなたはこのような質問について話していると思います:
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)
にインデックスを作成する場合 、このクエリは高速に機能します。