0
votes

Comment créez-vous une requête DELETE qui supprime des lignes avec des critères?

J'ai une requête d'insertion qui passe dans une table liée aux QuickBooks. La table Test_invoiceline a beaucoup de Part_id's et des descriptions qui sont exactement les mêmes.

INSERT INTO InvoiceLine (Part_ID, More_Info  )
SELECT Part_ID, Description 
FROM Test_InvoiceLine;

sql

7 commentaires

Pouvez-vous supprimer avant d'insérer?


Non, il faut faire après dans la table de factoCeline


De plus, vous insérez description dans ID de pièce ... qui semble éteint. Pouvez-vous s'il vous plaît vérifier la requête que vous avez posté?


Y a-t-il une colonne clé qui a une valeur unique pour chaque ligne?


J'ai mis à jour le post


Veuillez ajouter la balise pour la base de données particulière que vous utilisez.


Microsoft Access


3 Réponses :


0
votes

Ceci est SQL Server, cependant, Row_Number est largement utilisé dans d'autres RDM.

Voici la requête dont vous avez besoin. P>

;WITH Data AS
(
    SELECT  
        More_Info,
        Part_ID,Description,
        RowNumber = ROW_NUMBER() OVER(PARTITION BY  Part_Id,Description ORDER BY Part_Id,Description)
    FROM  Test_InvoiceLine    
)

DELETE T
FROM Test_InvoiceLine T
INNER JOIN Data D ON D.RowNumber > 1 AND D.MoreInfo = "Y" AND D.Part_Id = T.Part_ID


2 commentaires

OK qui semble près de ce que je cherche, mais j'en ai besoin pour supprimer des valeurs en fonction de deux paramètres. Peut-être quelque chose comme où part_id et plus_info est> 1


Mis à jour avec plus d'informations.



0
votes

Utilisez un CTE comme jeu de résultats temporaires. Vous interrogez essentiellement pour des enregistrements en double partitionné par vos critères et supprimez les enregistrements qui ne sont pas le premier enregistrement (conserve l'enregistrement d'origine).

Vérifiez-moi avant de couper quelque chose, car cela a été un moment depuis que Je l'ai fait, mais cela devrait fonctionner. xxx

source: Comment supprimer des enregistrements en double sur SQL Server


0 commentaires

0
votes

Y a-t-il une raison pour laquelle vous devez faire un insertion puis supprimer? Si vous essayez d'insérer -> Supprimer, il ressemble à vous d'essayer de mettre à jour les données par Part_id . xxx

Ceci mettra à jour plus_info dans la table infoiceline avec Description . >


0 commentaires