2014-02-15 44 views
1

选择一个被识别为即将到来的行的常用方式之前我们给出了哪一行?以某种顺序选择“之前”给定行之前的行

一个例子来说明这一点:

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)行)。

回答

1

您可以order bylimitwhere条款做到这一点:

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