Nous avons une table- Product_table
:MySQL: Comment obtenir la dernière ligne sur la clause facultative where en utilisant group by?
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
Nous devons trouver le max product_id
de la société où status is 1
. Pour cela, nous utilisons ci-dessous requête:
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;
Résultat:
product_id| company_id| Status | must_show
4 | 23 | 1 | 0
9 | 24 | 0 | 0
Cette requête est bien, mais nous avons un problème ici.
- Si la valeur pour
must_show is 1
alors nous avons besoin de montrer id max_product pour la société avec must_show = 1 et état = 1. - Si la valeur pour
must_show is 0
alors nous avons besoin d'afficher l'ID max_product pour la société avec status = 1.
Résultat attendu:
product_id| company_id| Status | must_show
2 | 23 | 1 | 1
9 | 24 | 1 | 0
S'il vous plaît donnez-moi le chemin pour trouver une solution. Merci!
Pour 'product_id = 10, le statut est 0' alors pourquoi voulez-vous le montrer? Vous avez mentionné que - 'Nous devons trouver le max. Product_id de la société où le statut est 1. 'Alors pourquoi enregistrer avec product_id = 10 est là dans le résultat attendu? –
Oui, quand il y a 1 dans must_show, nous devons montrer cet enregistrement. En fait changer la priorité. –
Je parle de 'product_id = 10'. Pour cet enregistrement 'status' et' must_show' les deux sont 0. –