2013-07-12 4 views
-3

У меня есть 4 таблицы select с Union All как connect0r для этих таблиц.SQL Sorting in 'Union All' Условие

Select [] from [a] inner join [b] on a.[] = b.[] 
where [] 

Union All 

Select [] from [a] inner join [b] on a.[] = b.[] 
where [] 

Union All 

Select [] from [a] inner join [b] on a.[] = b.[] 
where [] 

Union All 

Select [] from [a] inner join [b] on a.[] = b.[] 
where [] 

Я уже пытался сделать order by [a] asc в последней строке или в каждой select линии, но это все еще не работает, и стали ошибки.

+1

Можете ли вы показать нам полный sql? Символы '[]' и '[a]' для меня не имеют смысла. – Parado

+0

[a] - имя таблицы? Вы не должны пытаться заказать по имени таблицы – JsonStatham

ответ

2

В первом select вы должны иметь столбец с псевдонимом A

Select col1 as a [...] from [a] inner join [b] on a.[] = b.[] where []  
Union All 
Select [] from [a] inner join [b] on a.[] = b.[] where []  
Union All  
Select [] from [a] inner join [b] on a.[] = b.[] where []  
Union All  
Select [] from [a] inner join [b] on a.[] = b.[] where [] 
order by a 
+0

условие в каждом «где» отличается. так, если мне нравится @parado write, это всего лишь последний «выбор», который был заказан хорошо. – anakpanti

+0

@anakpanti Вы заказываете по столбцу не условие – Parado

+0

@anakpanti - вы применяете только один «ORDER BY» для запроса UNION [ALL], и он применяется к набору результатов * всего *, а не только к «последнему выбору», –

0

Вам просто нужно положить ОКВЕК В в конце заявления, ссылаясь на первый выбор имен столбцов/псевдонимов.

Например.

SELECT a,b customName 
FROM T1 
WHERE a = 'yourFilter' 
UNION ALL 
SELECT foo1,foo2 
FROM T2 
WHERE foo2 IN ('otherFilter','otherFilter2') 
ORDER BY customName DESC, a