2010-08-13 1 views
2
SELECT a FROM b 
UNION ALL 
SELECT a FROM c 
UNION ALL 
SELECT a FROM d 

Предоставляет ли UNION ALL гарантию распечатывать записи из таблиц b, c, d в этом порядке? I.e., нет записей из c до любого из b. Этот вопрос не для конкретной СУБД.Имеет ли таблица 1 UNION ALL таблица2 гарантия выходного порядка table1, table2?

+1

'ORDER BY' является * только * способ гарантировать порядок результатов в запросе в стандарте SQL. – Gabe

+0

Возможный дубликат [SQL Server UNION - то, что используется по умолчанию ORDER BY] (http://stackoverflow.com/questions/421049/sql-server-union-what-is-the-default-order-by-behaviour) –

ответ

8

Никакой заказ, никакой гарантии заказа вообще - это для каждой базы данных.

И для стандартного SQL ORDER BY применяется к результатам всех объединенных запросов.

1

Чтобы быть уверенным в использовании заказа

Select 1 as TableNo,* from a 
union all 
select 2 as TableNo,* from b 
union all 
select 3 as TableNO,* from c 
order by TableNo, [desired column]