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 :

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
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.

Voici ce que je tente de faire :

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
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 !

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 :

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 du mal à expliquer ce problème, j'espère qu'il pourra être compris par quelqu'un

Merci d'avance !