Wenn Sie wan mit min Preis in einem pg_id Zeile zu finden, können Sie den Mindestpreis pro pg_id in einer Unterabfrage finden und dann mit der Tabelle verbinden sie das gewünschte Ergebnis zu erhalten.
select p1.*
from product_group_scrape_history p1
join (
select pg_id,
min(product_price) product_price
from product_group_scrape_history
group by pg_id
) p2 on p1.pg_id = p2.pg_id
and p1.product_price = p2.product_price
Beachten Sie, dass diese mehrreihige pro pg_id im Falle zurück gibt es mehrere Zeilen mit min Produktpreis für diesen pg_id.
Wenn Sie wirklich eine Zeile benötigen pro pg_id mit Produktpreis min, können Sie die Benutzervariablen verwenden:
select *
from (
select
t.*,
@rn := if(@pg_id = pg_id, @rn + 1, if(@pg_id := pg_id, 1, 1)) rn
from (
select *
from product_group_scrape_history
order by pg_id, product_price
) t, (select @rn := 0, @pg_id := -1) t2
) t where rn = 1;
Wenn Sie Zeilen für jedes Produkt in einem pg_id mit min Preis zu finden bedeutet, können Sie Verwendung:
select p1.*
from product_group_scrape_history p1
join (
select pg_id,
product_id,
min(product_price) product_price
from product_group_scrape_history
group by pg_id,
product_id
) p2 on p1.pg_id = p2.pg_id
and p1.product_price = p2.product_price
and p1.product_id = p2.product_id;
ich möchte – Umair
@Umair nur ein Produkt pro pg zu finden - Sie haben die erste können dann – GurV
@Umair - eine weitere Alternative hinzufügen, wenn Sie wirklich pro pg eine Zeile wollen. Siehe den zweiten – GurV