Ответ 1
UNION ALL - лучший выбор. Это быстрее, чем UNION, и у вас будут взаимоисключающие строки.
Если вы выполните этот запрос
SELECT 'test-a1' AS name1, 'test-a2' AS name2
результатом будет выбор из одной строки с двумя столбцами, имеющими следующие значения:
test-a1, test-a2
Как изменить указанный выше запрос на выбор с несколькими строками, например.
test-a1, test-a2
test-b1, test-b2
test-c1, test-c2
Я знаю, как это сделать с UNION, но я чувствую, что существует более простой способ сделать это.
PS. Извините за такой базовый вопрос, это очень сложно для Google.
UNION ALL - лучший выбор. Это быстрее, чем UNION, и у вас будут взаимоисключающие строки.
SELECT 'test-a1' AS name1, 'test-a2' AS name2
UNION ALL
SELECT 'test-b1', 'test-b2'
UNION ALL
SELECT 'test-c1', 'test-c2'
Ключевое слово Values можно использовать, как показано ниже.
select * from
(values ('test-a1', 'test-a2'), ('test-b1', 'test-b2'), ('test-c1', 'test-c2')) x(col1, col2)
Расширение ответа @openshac на оракул, поскольку нижеприведенный код работает для оракула:
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
Мне бы хотелось услышать, что у кого-то есть лучшее решение. Раньше я использовал это:
Select top 3 'Hardcode'
from tableWithLotsOfRows
Не могли бы вы перевести abc с 123?
select top 3
'test-A'+convert(varchar, row_number() over (order by PrimaryKey)),
'test-B'+convert(varchar, row_number() over (order by PrimaryKey))
from tableWithLotsOfRows
который должен возвращать что-то вроде:
TestA1, Test-B1
TestA2, Test-B2
TestA3, Test-B3
Вы можете использовать временную таблицу, заполнить ее результатами и затем выбрать из нее
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;
Это вернет
name1 name2
==================
test_a test_b
test_c test_d
test_e test_f
test_g test_h
test_i test_j