【问题标题】:sql query first rows with specific column valuessql查询具有特定列值的第一行
【发布时间】:2012-08-29 14:39:29
【问题描述】:

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

【问题讨论】:

  • 您需要定义“第一行”的含义
  • 哦,对不起,我的意思是根据 SORT BY 子句偶然发现的第一行。更新了帖子以反映这一点

标签: sql sqlite


【解决方案1】:

将此作为两个单独的查询进行,其中一个包含内联视图;联合两者

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

【讨论】:

    【解决方案2】:

    举个简单的例子:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-12
      • 2012-01-06
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 2021-02-04
      • 1970-01-01
      相关资源
      最近更新 更多