Nein, das ist nicht der richtige Ansatz.
Ich glaube, Sie sprechen von einer Abfrage wie dieser:
SELECT product.*, MIN(qty)
FROM product
GROUP BY
type
ORDER BY
qty
Was Sie hier tun, ist die Verwendung von MySQL
-Erweiterung, mit der Sie nicht aggregierte/nicht gruppierte Spalten in einem GROUP BY
auswählen können Abfrage.
Dies wird hauptsächlich in Abfragen verwendet, die sowohl einen JOIN
enthalten und ein GROUP BY
auf einem PRIMARY KEY
, etwa so:
SELECT order.id, order.customer, SUM(price)
FROM order
JOIN orderline
ON orderline.order_id = order.id
GROUP BY
order.id
Hier order.customer
ist weder gruppiert noch aggregiert, sondern da Sie nach order.id
gruppieren , hat es innerhalb jeder Gruppe garantiert den gleichen Wert.
In Ihrem Fall alle Werte von qty
innerhalb der Gruppe unterschiedliche Werte haben.
Es ist nicht garantiert, aus welchem Datensatz innerhalb der Gruppe die Suchmaschine den Wert übernimmt.
Sie sollten dies tun:
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
)
Wenn Sie einen Index für product (type, qty, id)
erstellen , diese Abfrage wird schnell funktionieren.