2014-02-15 43 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; 
相關問題