2010-11-02 1 views
1

пример -UNION Query-дисплей результатов в запросах порядка записываются

select * from discussion where title like '%india%' 
UNION 
select * from discussion where title like '%Australia%' 

Он показывает мне результаты в порядке идентификаторов обсуждения смесительные как typse результатов

Я хочу, чтобы отобразить Индии результаты в первую очередь то результаты в Австралии и я не могу использовать Option ALl, поскольку мне также нужно удалить повторяющиеся строки.

Что делать?

ответ

5

Вы можете добавить колонку на заказ по

select *, 1 as ORD from discussion where title like '%india%' 
UNION 
select *, 2 as ORD from discussion where title like '%Australia%' 

order by ORD 

EDIT - 29/11/2010

Благодаря дубликата с проблемой ORD я был думая о, возможно, более изящном способе достижения этого

Select * from discussion 
where title like '%india%' or title like '%Australia%' 
order by (case when title like '%india%'then 1 else 2 end) 
+0

+1, единственный ответ до сих пор, который не беспокоит внешний выбор. –

+0

спасибо Это сработало. – nishant

+0

В этом есть одна проблема, она также дает мне дубликаты записей. Один результат может появиться несколько раз. Каково решение – nishant

1

Try:

SELECT * FROM 
(
    select 1 OrderNo, d.* from discussion d where title like '%india%' 
    UNION 
    select 2 OrderNo, d.* from discussion d where title like '%Australia%' 
) 
ORder by OrderNo 
0
select * from 
(
select * from discussion where title like '%india%' 
UNION 
select * from discussion where title like '%Australia%' 
) 
ORDER BY title DESC 
;