82 votes

Comment sélectionner plusieurs lignes SQL codées en dur ?

Si vous exécutez cette requête

 SELECT 'test-a1' AS name1, 'test-a2' AS name2

le résultat sera une sélection d'une ligne avec deux colonnes ayant ces valeurs :

 test-a1, test-a2

Comment puis-je modifier la requête ci-dessus pour avoir une sélection avec plusieurs lignes, par exemple

 test-a1, test-a2
test-b1, test-b2
test-c1, test-c2

Je sais comment faire avec UNION mais je pense qu'il existe un moyen plus simple de le faire.

PS. Désolé pour une question aussi basique, il est très difficile de la rechercher sur Google.

79voto

Muthu Points 847

Le mot-clé Values peut être utilisé comme ci-dessous.

 select * from 
(values ('test-a1', 'test-a2'), ('test-b1', 'test-b2'), ('test-c1', 'test-c2')) x(col1, col2)

58voto

openshac Points 1246
SELECT 'test-a1' AS name1, 'test-a2' AS name2 
UNION ALL 
SELECT 'test-b1', 'test-b2'
UNION ALL 
SELECT 'test-c1', 'test-c2'

29voto

HLGEM Points 54641

UNION ALL est le meilleur pari. C'est plus rapide que UNION et vous aurez des lignes mutuellement exclusives.

8voto

Alok Chaudhary Points 3171

Extension de la réponse de @openshac pour oracle, car le code mentionné ci-dessous fonctionne pour oracle :

 SELECT 'test-a1' AS name1, 'test-a2' AS name2 from dual 
UNION ALL 
SELECT 'test-b1', 'test-b2' from dual
UNION ALL 
SELECT 'test-c1', 'test-c2' from dual

4voto

ajaali Points 11

Vous pouvez utiliser une table temporaire, la remplir avec vos résultats, puis la sélectionner

 create table #tmpAAA (name1 varchar(10), name2 varchar(10))
insert into #tmpAAA (name1, name2) 
values ('test_a', 'test_b'),
       ('test_c', 'test_d'),
       ('test_e', 'test_f'),
       ('test_g', 'test_h'),
       ('test_i', 'test_j');
select * from #tmpAAA;

Cela reviendra

 name1   name2
==================
test_a  test_b
test_c  test_d
test_e  test_f
test_g  test_h
test_i  test_j

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X