Copie de base à base avec condition sur une aggregation
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:
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 :oops: :
Code:
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:
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 :roll:
Merci d'avance !