Utilizzare MySQL per select il record successivo dopo un valore corrispondente

Come posso select tutte le righe accanto alla corrispondenza della row con la condizione?

Questa è la struttura della tabella con 10 righe, ma il numero di righe aumenta in futuro.

Struttura della tabella Testo normale:

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: la string "DateTime" è semplicemente simbolica, sarebbe qualsiasi DataTime.

Sto cercando di conoscere il primo numero N1 dopo il numero: 9

Ho provato diversi modi ma il risultato non è quello di cui ho bisogno.

Il risultato previsto è:

 ID Date N1 2 DateTime 2 5 DateTime 3 9 DateTime 3 

È ansible utilizzare una Tabella Temp per contenere l' Id dei record in cui N1 è uguale a 9 . Quindi selezionate tutti i record dalla tabella Times where l' Id è ciò che i valori sono nella tabella temp plus uno che è il record successivo dalla colonna Id il record molto successivo dopo il valore N1 di 9 .

Query 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); 

O

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

Conferma

Seleziona * da Times

immettere qui la descrizione dell'immagine

Con query sopra

immettere qui la descrizione dell'immagine


Ulteriori risorse

  • Tabella temporanea
  • Crea tabella
  • Tabella di goccia

Una versione migliore della risposta di Moderator Impersonator sarebbe:

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