DELETE quand 2 valeurs identiques [Résolu]

mikesunshine59 71 Messages postés lundi 22 janvier 2018Date d'inscription 11 février 2018 Dernière intervention - 28 janv. 2018 à 17:33 - Dernière réponse : mikesunshine59 71 Messages postés lundi 22 janvier 2018Date d'inscription 11 février 2018 Dernière intervention
- 30 janv. 2018 à 14:30
Bonjour,

Quand je fais cette requete : SELECT Timestamp, Type FROM orange ORDER BY Timestamp LIMIT 0,2 j'obtiens 2 ligne et je souhaiterais faire un DELETE sur la ligne du Timestamp le plus récent quand le 'Type' est le même sur ces 2 lignes.

Pouvez vous m'aider svp ?
Afficher la suite 

11 réponses

Répondre au sujet
yg_be 4599 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 13 février 2018 Dernière intervention - 28 janv. 2018 à 17:46
+1
Utile
10
bonsoir,
essayons d'abord ceci:
SELECT max(Timestamp), Type FROM orange group by Type
HAVING count(*)>1;

cela te donne bien tout ce que tu veux supprimer, rien de plus, rien de moins?
note que cela ne donne pas exactement ce que tu avais décrit initialement.
mikesunshine59 71 Messages postés lundi 22 janvier 2018Date d'inscription 11 février 2018 Dernière intervention - 28 janv. 2018 à 20:31
si les deux enregistrements les plus RECENTS (et non le plus anciens) sont de même type, supprimer le plus récent des deux.
yg_be 4599 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 13 février 2018 Dernière intervention > mikesunshine59 71 Messages postés lundi 22 janvier 2018Date d'inscription 11 février 2018 Dernière intervention - 28 janv. 2018 à 22:31
en effet, DESC s'est subrepticement ajouté, :-)
mikesunshine59 71 Messages postés lundi 22 janvier 2018Date d'inscription 11 février 2018 Dernière intervention - 29 janv. 2018 à 17:44
Bonjour yg_be,

J'espère que tu vas bien,

La requête ci-dessous ne remplie pas cette condition : "si les deux enregistrements les plus RECENTS ont la même valeur dans le 'Type" alors on supprime le plus récent des deux".

Les deux valeurs du 'Type' sont soit BUY ou SELL. Donc je ne peux avoir que BUY puis SELL puis BUY puis SELL, etc ... La j'ai BUY puis SELL et plus rien ...

Peux tu m'aider ? voici pour rappel la requête.

DELETE orange from orange, (SELECT max(Timestamp) as maxstamp, Type FROM
(SELECT Timestamp, Type FROM orange ORDER BY Timestamp DESC LIMIT 0,2) as t group by Type
HAVING count(*)>1) as tt WHERE orange.Type = tt.Type AND orange.Timestamp = tt.maxstamp
yg_be 4599 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 13 février 2018 Dernière intervention > mikesunshine59 71 Messages postés lundi 22 janvier 2018Date d'inscription 11 février 2018 Dernière intervention - 29 janv. 2018 à 20:36
veux-tu dire que tes deux enregistrements les plus récents sont de même type, et la requête DELETE ne fait rien?
mikesunshine59 71 Messages postés lundi 22 janvier 2018Date d'inscription 11 février 2018 Dernière intervention - 30 janv. 2018 à 14:30
En fait c'est moi qui dit n'importe quoi ... Cela fonctionne très bien.

Merci pour ton aide,
Commenter la réponse de yg_be