SQL: ВЫБРАТЬ с равными перед LIKE - PullRequest
3 голосов
/ 01 марта 2012

Мне нужно запросить в базе данных SQLite элементы, которые либо соответствуют заданной строке, либо LIKE query%.Однако, это не так просто, как

SELECT id, type, number FROM roads WHERE number = '12' OR number LIKE '12%'

. Мне нужно, чтобы все равные совпадения приходили до того, как совпадения LIKE.Я представляю, что там где-то есть AS и упорядочивает его, но я не уверен, как это будет работать.Я хочу, чтобы по возможности не делать два запроса.

Ответы [ 3 ]

4 голосов
/ 01 марта 2012
SELECT id, type, number
FROM roads 
WHERE number = '12' OR number LIKE '12%'
ORDER BY CASE WHEN number = '12' THEN 0 ELSE 1 END, number
3 голосов
/ 01 марта 2012

Я не уверен, поддерживается ли этот синтаксис в Sqlite, но вот идея:

SELECT id, type, number FROM roads WHERE number LIKE '12%'
ORDER BY
   CASE
      WHEN number = '12' THEN 0
      ELSE 1
   END
1 голос
/ 01 марта 2012
SELECT id, type, number 
   FROM roads 
  WHERE number = '12' 
UNION
SELECT id, type, number 
   FROM roads 
  WHERE number LIKE '12%'
        AND NOT EXISTS ( SELECT id, type, number 
                           FROM roads 
                          WHERE number = '12' );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...