【问题标题】:SQL - Sqlite Query: obtain the fields where one number is greater than another, if less than 3 complete with the first, always 3SQL - Sqlite 查询:获取一个数字大于另一个数字的字段,如果小于 3,则与第一个完整,始终为 3
【发布时间】:2013-12-01 17:32:42
【问题描述】:

我做了一个不工作的查询

我有一张这样的桌子

_id - E1
------------
1 - 100
2 - 335
3 - 420
4 - 440
5 - 500
6 - 514
7 - 524
8 - 534
9 - 544
10 - 552
11 - 559
12 - 607
13 - 615
14 - 623
15 - 631
16 - 639

以及我提出的查询:

SELECT * FROM (SELECT * FROM Table WHERE E1 > 633 AND _sentido = 'V' UNION SELECT * FROM Table) LIMIT 3

当我执行这个时,我得到了

_id - E1
------------
1 - 100
2 - 335
3 - 420

但我真正想要的是

_id - E1
------------
1 - 639
2 - 100
3 - 335

如果最后一行并且没有 3 个选定行,则完成第一个达到 3

总是 3 行!

我希望你能帮助我,约翰

【问题讨论】:

  • 当你说complete with the first...你用什么顺序说first?此外,如果从原始过滤器中仅获取一个结果,那么您是否希望获得两次 first 值?

标签: sql sqlite select union


【解决方案1】:

你有一个聪明的方法,但它不会奏效。不保证子查询的顺序。您想要的是先按您的条件订购,然后填写其余部分。试试这个:

SELECT *
FROM table
ORDER BY (case when E1 > 633 AND _sentido = 'V' then 1 else 2 end)
LIMIT 3;

这会将您感兴趣的记录放在首位。 limit 3 将检索这些记录(最多 3 条),然后用剩余的记录填充剩余的行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多