Я хочу начать с того, что знаю, что есть пара вопросов относительно аналогичных проблем, но они либо не отвечают на мой вопрос полностью, либо кажутся несовместимыми с SQLite.

Я хочу запросить все строки со значением -1 и первые строки со значениями, отличными от -1. Под «первыми строками» я подразумеваю группу строк, которые первыми имеют определенное значение. первая строка - это строка, на которую впервые наткнулись в зависимости от предложения SORT BY

Пример данных и результата:

Данных:

a   b   -1 
c   d    1
e   f    2
g   h    2
i   j    2 
k   l   -1

Результат:

a   b   -1 
c   d    1
e   f    2
k   l   -1

И, как сказано выше, я использую базу данных SQLite

0
Emil Sjölander 29 Авг 2011 в 16:03

2 ответа

Лучший ответ

Сделайте это как два отдельных запроса, один из которых содержит встроенное представление; СОЮЗ двух

  select blah, blah from T where  ...
UNION
  select * from
  (
    select blah, blah from T where something else order by somecolumn limit 1
  )
0
Johan 29 Авг 2011 в 14:28

На простом примере:

> select * from ex1; 
+------+----------+
| id   | name     |
+------+----------+
|    1 | Pirate   |
|    2 | Monkey   |
|    3 | Ninja    |
|    4 | Spagheti |
|    5 | kumar    |
|    6 | siva     |
+------+----------+

> select * from ex1 union select "1", "sing" order by case name when 'sing' then 1 else 2 end, name;
+------+----------+
| id   | name     |
+------+----------+
| 1    | sing     |
| 5    | kumar    |
| 2    | Monkey   |
| 3    | Ninja    |
| 1    | Pirate   |
| 6    | siva     |
| 4    | Spagheti |
+------+----------+
0
Mr. Black 29 Авг 2012 в 06:39