Bonjour,

En faisant un test, je me trouve devant un problème sur UNION que j'ai du mal à comprendre.
Pour moi, UNION ajoutait 2 ou n résultats de requêtes.
Hors, si je code comme suit:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
WITH Cte(N)
     AS (SELECT TOP 10 numero
         FROM   comclient
         WHERE  cloture_auto = 1),
     Cte2 (N)
     AS (SELECT *
         FROM   Cte)
SELECT *
FROM   Cte2
UNION
SELECT *
FROM   Cte2
J'obtiens un résultat de 10 lignes. Est-ce que ça ne devrait pas être 20 ? (Je sais, la requête n'a aucun sens, c'est juste pour l'exemple).

Ensuite, je fais :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
...
SELECT *
FROM   Cte
UNION
SELECT *
FROM   Cte2
Résultat: 11 lignes

Et pire ... si je l'exécute plusieurs fois de suite, je n'obtiens pas le même nombre de lignes à chaque fois . Ça va de 10 à 16 en passant par 11, 12, 14.

Et là, je comprends plus du tout

Il y a une logique sous-jacente que je n'ai pas vue ?