选择一行的惯用方法是什么?该行被标识为在给定行之前出现的行?
举例说明:

CREATE TABLE entry (x VARCHAR, i INTEGER);
ALTER TABLE entry ADD PRIMARY KEY (x, i);
INSERT INTO entry (x,i) VALUES ('a', 1);
INSERT INTO entry (x,i) VALUES ('a', 2);
INSERT INTO entry (x,i) VALUES ('b', 1);

表“条目”根据自然顺序有清晰的词典编排顺序:
SELECT * FROM entry ORDER BY x, i

如果给我b1(即('b', 1)行)如何编写一个查询来选择在此之前出现的行?(即('a', 2)行)。如果给定“第一”行(在上面的情况下,是('a', 1)行),则查询应返回空行集。

最佳答案

您可以使用order bylimit以及where子句来完成此操作:

select e.*
from entry e
where x < 'b' or x = 'b' and i < 1
order by x desc, b desc
limit 1;

关于sql - 以某种顺序选择在给定行“之前”的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21802664/

10-14 02:06