Use MySQL para selecionar o próximo registro após um valor correspondente

0

Como posso selecionar todas as linhas ao lado da linha correspondente à condição?

Esta é a estrutura da tabela com 10 linhas, mas o número de linhas aumenta no futuro.

Estrutura da tabela Texto simples:

ID      Date        N1
1     DateTime    9  
2     DateTime    2
3     DateTime    5
4     DateTime    9
5     DateTime    3
6     DateTime    6
7     DateTime    7
8     DateTime    9
9     DateTime    3
10    DateTime    9

Nota: A string "DateTime" é apenas simbólica, seria qualquer DateTime.

Estou tentando saber o primeiro número N1 após o número: 9

Eu tentei várias maneiras, mas o resultado não é o que eu preciso.

O resultado esperado é:

ID      Date        N1
2     DateTime      2
5     DateTime      3
9     DateTime      3
    
por Martini002 11.04.2017 / 00:01

2 respostas

1

Você pode usar uma Tabela temporária para manter o Id dos registros em que N1 é igual a 9 . Em seguida, você seleciona todos os registros da tabela Times , em que Id são os valores na tabela temporária mais um , que é o próximo registro da coluna Id no próximo registro após o valor N1 de 9 .

Consulta SQL

DROP TABLE IF EXISTS t1;
CREATE TEMPORARY TABLE t1 (SELECT id FROM numbers WHERE N1 = 9);
Select * FROM t1;

SELECT * FROM numbers
WHERE id IN (Select id+1 FROM t1);

Ou

SELECT * FROM numbers WHERE id IN (SELECT ID+1 FROM numbers WHERE N1 = 9)

Confirmação

Select * from Times

enter image description here

With above query

enter image description here

Mais recursos

por 11.04.2017 / 02:02
0

Uma versão melhor de Moderator Impersonator answer seria:

SELECT * FROM numbers WHERE id IN (SELECT ID+1 FROM numbers WHERE N1 = 9)
    
por 11.04.2017 / 02:58