Disons que nous avons le tableau suivantlignes SELECT basées sur le caractère distinctif de deux colonnes
orderId productId orderDate amount
1 2 2017-01-01 20:00:00 10
1 2 2017-01-01 20:00:01 10
1 3 2017-01-01 20:30:10 5
1 4 2017-01-01 22:31:10 1
où les 2 premiers rangs sont connus pour être des doublons (par exemple, résultat d'un logiciel défectueux), parce que orderId + productId doit former une clé unique
Je souhaite supprimer ce type de doublons. Comment faire cela de la manière la plus efficace?
S'il n'y avait pas la ORDERDATE une seconde différence, nous pourrions utiliser
SELECT DISTINCT * FROM `table`
Avec la différence, on pourrait utiliser groupby:
SELECT `orderId`,`productId`,MIN(`orderDate`),MIN(`amount`)
FROM table
GROUP BY `orderId`,`productCode`
Je trouve cette dernière commande très fatigant de taper s'il y a beaucoup de colonnes. Quelles sont les autres options?
MISE À JOUR: J'utilise Snowflake.
Quel SGBD utilisez-vous? –
Que faire si le montant diffère? Comment décider laquelle des deux entrées conserver? –
Voulez-vous supprimer les enregistrements en double de la table ou ne pas les sélectionner? –