SQL-запрос - Используя порядок в ОБЪЕДИНЕНИИ

83
задан Jonas 21 September 2011 в 15:09
поделиться

7 ответов

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

В этом случае

SELECT * FROM 
(
  SELECT table1.field1 FROM table1 ORDER BY table1.field1
) DUMMY_ALIAS1

UNION ALL

SELECT * FROM
( 
  SELECT table2.field1 FROM table2 ORDER BY table2.field1
) DUMMY_ALIAS2
118
ответ дан 24 November 2019 в 08:40
поделиться

Вторая таблица не может включать имя таблицы в ORDER BY пункт.

Так...

SELECT table1.field1 FROM table1 ORDER BY table1.field1
UNION
SELECT table2.field1 FROM table2 ORDER BY field1

не выдает исключение

0
ответ дан Curtis Inderwiesche 24 November 2019 в 08:40
поделиться
SELECT table1Column1 as col1,table1Column2 as col2
    FROM table1
UNION
(    SELECT table2Column1 as col1, table1Column2 as col2
         FROM table2
)
ORDER BY col1 ASC
5
ответ дан JohnMcG 24 November 2019 в 08:40
поделиться
(SELECT table1.field1 FROM table1 
UNION
SELECT table2.field1 FROM table2) ORDER BY field1 

Работа? Помните думают наборы. Получите набор, Вы хотите использовать объединение и затем выполняете свои операции на нем.

9
ответ дан Tim Cooper 24 November 2019 в 08:40
поделиться

Вот является пример от Northwind 2007:

SELECT [Product ID], [Order Date], [Company Name], [Transaction], [Quantity]
FROM [Product Orders]
UNION SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity]
FROM [Product Purchases]
ORDER BY [Order Date] DESC;

пункт ORDER BY просто должен быть последним оператором, после того, как Вы сделали весь свой unioning. Вы можете объединение несколько наборов вместе, затем помещать пункт ORDER BY после последнего набора.

17
ответ дан Todd Price 24 November 2019 в 08:40
поделиться

Я думаю, что это делает хорошее задание объяснения.

следующим является Запрос на объединение, который использует пункт ORDER BY:

select supplier_id, supplier_name
from suppliers
where supplier_id > 2000
UNION
select company_id, company_name
from companies
where company_id > 1000
ORDER BY 2;

, Так как имена столбцов отличаются между двумя "избранными" операторами, более выгодно сослаться на столбцы в пункте ORDER BY их положением в наборе результатов.

В этом примере, мы отсортировали результаты по supplier_name / company_name в порядке возрастания, как обозначено "ORDER BY 2".

supplier_name / company_name поля находятся в положении № 2 в наборе результатов.

Взятый отсюда: http://www.techonthenet.com/sql/union.php

57
ответ дан Usman Maqbool 24 November 2019 в 08:40
поделиться
SELECT field1 FROM table1
UNION
SELECT field1 FROM table2
ORDER BY field1
64
ответ дан Patrick 24 November 2019 в 08:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: