选择一行的惯用方法是什么?该行被标识为在给定行之前出现的行?
举例说明:
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
如果给我
b
和1
(即('b', 1)
行)如何编写一个查询来选择在此之前出现的行?(即('a', 2)
行)。如果给定“第一”行(在上面的情况下,是('a', 1)
行),则查询应返回空行集。 最佳答案
您可以使用order by
和limit
以及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/