SQLite сортировка по полю в объединении - PullRequest
0 голосов
/ 23 марта 2012

У меня запрос sqlite union:

SELECT term,abstract, termid, nterm FROM 
(SELECT term, subterm, termid, nterm FROM t1 WHERE (nterm like '%bayern%') 
UNION 
SELECT term, subterm, termid, nterm FROM t2 WHERE (subterm like '%bayern%')
) ORDER BY nterm+0 ASC

Теперь в наборе результатов я получаю каждое слово в nterm / subterm естественным образом упорядоченным. Однако я хочу добавить сортировку, которая выводит меня сначала в nterm, а затем в subterm (каждый заказывает natsort).

Возможно ли это? Я попытался дать имя запросам в скобках (используя AS t1, AS t2 соответственно), но он возвращает мне ошибку.

1 Ответ

0 голосов
/ 23 марта 2012

Вот один из способов

Select term,subterm,termid,nterm From
(
SELECT 1 as termkey,term, subterm, termid, nterm FROM t1 WHERE (nterm like '%bayern%') 
UNION 
SELECT 2, term, subterm, termid, nterm FROM t2 WHERE (subterm like '%bayern%')
) innerquery
order by termkey,nterm

Если я получу то, что вы имели в виду, все равно легко адаптировать.

NB, когда вы делаете select * From (somequery), вы должны псевдонимзапрос в круглых скобках, в противном случае парсер захлебнется им.

Это более подробная версия выше, которая делает происходящее более понятным

Select innerquery.term,innerquery.subterm,innerquery.termid,innerquery.nterm From
(
SELECT 1 as termkey,term, subterm, termid, nterm FROM t1 WHERE (nterm like '%bayern%') 
UNION 
SELECT 2, term, subterm, termid, nterm FROM t2 WHERE (subterm like '%bayern%')
) innerquery
order by innerquery.termkey,innerquery.nterm
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...