Maison > Questions et réponses > le corps du texte
Je vais vous expliquer ma situation. MySQL 5.7
J'ai 2 tables : Registre et Mobile. Ces deux tables ont IDMovement en commun donc je peux les rejoindre
Ma question : Je dois regrouper par colonne Registry (qui est une colonne varchar) et je dois vérifier MAX IDMovement. Dans cette ligne, il y a une autre colonne appelée IDCausal. Ignorer si MAX IDMovement sur IDCasual est différent de 21. Sinon, retournez la ligne.
Je vais donner un exemple de ce que j'ai fait :
SELECT m.IDMovement, mo.IDCausal, m.Registry FROM registry m JOIN movement mo ON m.IDMovement = mo.IDMovement WHERE m.Registry = "2SST0160"
P.S. WHERE n'est qu'un exemple, je dois interroger chaque registre.
La valeur de retour du registre 2SST0160 est :
IDMovement IDCausal Registry 5550 21 2SST0160 9817 5 2SST0160
Dans l'exemple, le MAX IDMovement est 9817, mais le IDCausal est 5, donc le résultat attendu de la requête dans cet exemple n'est RIEN. Si IDCausal vaut 21, le résultat attendu est uniquement des lignes de 21. Pour chaque registre, je m'attends à ce que le résultat soit 0 ou 1 ligne par registre.
J'espère avoir été clair, merci pour votre aide !
P粉1655228862023-09-15 00:13:19
WITH newtable AS ( SELECT m.IDMovement, mo.IDCausal, m.Registry FROM registry m JOIN movement mo ON m.IDMovement = mo.IDMovement WHERE m.Registry = '2SST0160' ) SELECT * FROM newtable WHERE (SELECT IDCausal FROM newtable ORDER BY IDMovement DESC LIMIT 1) = 21 ORDER BY IDMovement DESC LIMIT 1;