Bonjour,
Supposons que j'ai la table suivante:
La requête que je veux faire doit faire un update sur la table ayant les conditions suivantes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 ------------------------------ id | actif | enregistrement ------------------------------ 3 | O | 2015-10-16 3 | O | 2015-10-15 3 | N | 2015-10-14 4 | N | 2015-10-15 4 | O | 2015-10-14
- l'id a une colonne actif = 'O' plus d'une fois
- parmi ces lignes ayant la colonne actif = 'O' plus d'une fois, mon update devra les changer en actif = 'N', sauf celle ayant la date d'enregistrement la plus récente, qui devra rester à 'O'.
Dans la table ci-dessus, l'id ayant plus d'une fois colonne actif = 'O' est le 3.
On doit mettre actif = 'N', sauf à la ligne ayant l'enregistrement le plus récent, qu'on doit laisser à 'O'. Dans notre exemple, on laissera donc la ligne ayant enregistrement = 2015-10-16.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ------------------------------ id | actif | enregistrement ------------------------------ 3 | O | 2015-10-16 3 | O | 2015-10-15 3 | N | 2015-10-14
J'ai essayé cette requête, mais il y a erreur.
Avez-vous une idée de la requête qu'il faut faire?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 update test as t1, (select id from test where actif = 'O' group by id having count(*) > 1) as t2 set t1.actif = 'N' where t1.enregistrement != max(t2.enregistrement);
Merci!
Partager