Bonjour,
J'aimerai effectuer une copie d'une table à partir d'une base source sur une base destination mais portant sur une condition count(*) afin d'élimer des cas de doublons de ma table source du fait que la table destination contient moins de clefs primaires.
La syntaxe est la suivante :
Ceci bien evidemment fonctionne mais dès que l'on veut inclure une condition sur un aggregat comme la fonction count, nous le nombre de colonne du SELECT n'est plus le même que le nombre de colonne de l'INSERT et bien sûr ceci ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 INSERT INTO baseDestination.table (champ1, champ2,champ3) SELECT champ1,champ2,champ3 GROUP By champ1, champ2, champ3
Voici ce que je tente de faire:
Mais le fait de déclarer count(*) dans le SELECT ne m'autorise du coup pas l'INSERT. LE problème c'est que je ne peux pas m'en passer !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 INSERT INTO baseDestination.table (champ1, champ2,champ3) SELECT champ1,champ2,champ3,count(*) AS CountDoublon GROUP BY champ1, champ2,champ3 HAVING CountDoublon < 2
J'ai même tenté de déclarer un champ constant dans l'INSERT histoire de faire correspondre le nombre de colonnes respectivement dans le SELECT et l'INSERT. Ca ferait un code du type :
J'ai du mal à expliquer ce problème, j'espère qu'il pourra être compris par quelqu'un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 INSERT INTO baseDestination.table (champ1, champ2,champ3,'') SELECT champ1,champ2,champ3,count(*) AS CountDoublon GROUP BY champ1, champ2,champ3 HAVING CountDoublon < 2
Merci d'avance !







Répondre avec citation
Partager