sql查询具有特定列值的第一行

时间:2011-08-29 12:03:24

标签: sql sqlite

我想首先说我知道有几个关于类似问题的问题,但他们要么完全没有回答我的问题,要么似乎与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数据库

2 个答案:

答案 0 :(得分:0)

将此操作作为两个单独的查询,其中一个包含内联视图; UNION这两个

  select blah, blah from T where  ...
UNION
  select * from
  (
    select blah, blah from T where something else order by somecolumn limit 1
  )

答案 1 :(得分:0)

举个简单的例子:

> 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 |
+------+----------+