Wir haben einen Tabellen- Product_table
:MySQL: Wie erhält man die letzte Zeile der optionalen Where-Klausel mit der Gruppe?
product_id | company_id | Status | must_show
1 | 23 | 1 | 1
2 | 23 | 1 | 1
3 | 23 | 1 | 0
4 | 23 | 1 | 0
5 | 23 | 0 | 0
6 | 24 | 1 | 0
7 | 24 | 1 | 0
8 | 24 | 1 | 0
9 | 24 | 1 | 0
10 | 24 | 0 | 0
Wir brauchen die max product_id
von Unternehmen zu finden, wo status is 1
. Dafür verwenden wir unter query:
select * from Product_table as pt
JOIN (select MAX(product_id) as extid from Product_table) t1 ON t1.extid =
pt.product_id where company_id in (23,24) and status = 1 group by company_id;
Ergebnis:
product_id| company_id| Status | must_show
4 | 23 | 1 | 0
9 | 24 | 0 | 0
Diese Abfrage ist in Ordnung, aber wir haben ein Problem hier.
- Wenn Wert für
must_show is 1
dann müssen wir max_product id für Firma mit must_show = 1 und Status = 1 anzeigen. - Wenn Wert für
must_show is 0
dann müssen wir Max_Produkt-ID für Firma mit Status = 1 anzeigen.
Erwartetes Ergebnis:
product_id| company_id| Status | must_show
2 | 23 | 1 | 1
9 | 24 | 1 | 0
Bitte geben Sie mir den Weg, eine Lösung zu finden. Vielen Dank!
Für 'product_id = 10, Status ist 0', warum möchten Sie das zeigen? Sie haben Folgendes erwähnt: "Wir müssen die maximale product_id der Firma finden, in der der Status 1 ist." Warum gibt es dann eine Aufzeichnung mit product_id = 10 im erwarteten Ergebnis? –
Ja, wenn es eine 1 in must_show gibt, müssen wir diesen Datensatz anzeigen. Eigentlich die Priorität ändern. –
Ich spreche von 'product_id = 10'. Für diesen Datensatz 'status' und' must_show' sind beide 0. –