我想知道是否有可能找到仅在第一次出现 where 子句之后出现的记录。我目前在此示例中使用 PostgreSQL,但首选不是 PostgreSQL 特定的东西。
例如,如果我有这样的表
drop table if exists dummy;
create table dummy (
col_a varchar(10),
col_b varchar(10),
col_c varchar(10),
test integer
);
insert into dummy values
('A', 'B', 'C', 1),
('B', 'C', 'A', 2),
('C', 'A', 'B', 3),
('D', 'E', 'F', 4);
如果我运行以下查询,我可以按新顺序获取数据
select * from dummy
order by col_b;
返回
C | A | B | 3
A | B | C | 1
B | C | A | 2
D | E | F | 4
是否可以做一些事情,以便我只能返回在某个 where 子句之后发生的行,例如
select * from dummy
/* where row appears after results 'A', 'B', 'C', 1 */
order by col_b;
要得到
B | C | A | 2
D | E | F | 4
更新
我不使用的原因where col_b > ?
是因为它不适合重复值
在我需要匹配这样的附加列之前,它会起作用
select * from dummy
where col_b > 'B'
and col_c > 'C'
order by col_b;
在这种情况下,它将返回最后一行,因为这两个值都高于截止值,但在第一次出现指定行后它没有截止。
我试图有一个 where 子句可以识别特定行是行
A | B | C | 1
在这种情况下
看来您正在寻找这样的东西:
容易地。
小提琴