Gostaria de saber se é possível encontrar registros que só aparecem após a primeira ocorrência de uma cláusula where. Atualmente estou usando o PostgreSQL para este exemplo, mas seria preferível algo não específico do PostgreSQL.
Se eu tivesse uma tabela como esta para um exemplo
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);
Se eu executar a consulta abaixo posso obter os dados em uma nova ordem
select * from dummy
order by col_b;
retornando
C | A | B | 3
A | B | C | 1
B | C | A | 2
D | E | F | 4
É possível fazer algo para que eu possa retornar apenas as linhas que ocorrem após uma determinada cláusula where, algo como
select * from dummy
/* where row appears after results 'A', 'B', 'C', 1 */
order by col_b;
Para obter
B | C | A | 2
D | E | F | 4
ATUALIZAR
O motivo pelo qual não estou usando where col_b > ?
é porque não atende a valores duplicados
Funcionaria até que eu precisasse corresponder em uma coluna adicional como esta
select * from dummy
where col_b > 'B'
and col_c > 'C'
order by col_b;
Nesse caso, ele retornará a última linha porque ambos os valores estão acima do limite, mas não está cortando após a primeira ocorrência da linha especificada.
Estou tentando ter uma cláusula where que possa identificar a linha específica sendo linha
A | B | C | 1
Nesse caso
parece que você está procurando algo assim:
Facilmente.
violino