Bonjour,
je souhaiterais savoir comment faite pour supprimer le contenu de ma table en laissant le 1er enregistrement??
Version imprimable
Bonjour,
je souhaiterais savoir comment faite pour supprimer le contenu de ma table en laissant le 1er enregistrement??
bonjour,
Premier selon quel critères ?
Il n'y a pas d'ordre dans une table, il faut donc en définir un...
Sur le principe, vous pouvez faire comme ceci, en supposant une colonne LaDate comme indiquant la date d'insertion, et que vous voulez garder la plus récente, et supprimer toutes les autres :
adaptez en fonction de votre besoin.Code:
1
2
3
4
5
6
7
8 WITH CTE AS ( SELECT ROW_NUMBER() OVER(ORDER BY LaDate DESC) AS RN FROM LaTable ) DELETE FROM CTE WHERE RN > 1
en utlisant rownum ?
y'a t'il une possibilité de faire ça avec rownum = 1?
quelle horreur !Citation:
drop table
where
not exists(
select * from table
where rownum = 1)
la réponse de aieeeuuuuu ne vous plait pas ?Citation:
ouii mais je souhaite savoir s'il y'avait un équivalent? sous sql server?
Le code de aieeeuuuuu répond a votre problématique.
"drop table" sert a supprimer une table et non des lignes d'une table, donc il n'y a pas de where dans une instruction drop
En fait je voulais supprimer le contenu de ma table et ne laisser dans cette table que la 1ère ligne (le 1er enregistrement) ,voilà ce que je voulais faire
je remets ici le code de aieeeuuuuu
ca permet supprimer toutes les lignes sauf la premièreCode:
1
2
3
4
5
6
7 WITH CTE AS ( SELECT ROW_NUMBER() OVER(ORDER BY LaDate DESC) AS RN FROM LaTable ) DELETE FROM CTE WHERE RN > 1
Il n'y a pas d'ordre des lignes dans une table quelque soit le SGBDR. même Oracle et son ROWNUM ne donne pas l'ordre des lignes. C'est à vous de savoir ce que vous voulez retenir ou non dans le DELETE.
Extrait de la doc Oracle :
order_by_clause
Use the ORDER BY clause to order rows returned by the statement. Without an order_by_clause, no guarantee exists that the same query executed more than once will retrieve rows in the same order.
A +
Je ne comprends toujours pas pourquoi le rownum ne donnerai pas d'ordre!!
Rownum=1 => le 1er enregistrement
Rownum = 2 => le 2 eme enregistrement
......etc
Donc si je veux supprimer toute les lignes supérieur à 1 ,j'aurai supprimé toute les lignes de ma table sauf la 1ere ligne !!
On vous l'a dit déjà plusieurs fois… Dans une SGBDR il n'existe aucune position des lignes. Les lignes sont placées au hasard (ou presque) en fonction de la place disponible dans le stockage. Comme dans un parking, ou vous allez choisir une place vide.
Le fait de faire des INSERT ne garantie JAMAIS un ordre positionnel des lignes.
Considérez les tables comme des sacs de billes. SI je vous donne mon sac de bille, comment pouvez-vous retrouver la première bille que j'y ais mis ?
Il serait sans doute temps de vous formez aux SGBDR. Mon site Web comme mon bouquin peuvent vous y aider :
Notamment : https://sqlpro.developpez.com/cours/sqlaz/erreurs/#L5
https://sqlpro.developpez.com
Pièce jointe 385566
A +
Est ce que cela est valable quand on créé une colonne identity ?