sql >> Databáze >  >> RDS >> Oracle

Vybírejte řádky, dokud nebude splněna podmínka

Pomocí dílčího dotazu zjistěte, ve kterém bodě byste měli zastavit, a poté vraťte všechny řádky od počátečního bodu do vypočítaného bodu zastavení.

SELECT
  *
FROM
  yourTable
WHERE
      id >= 4
  AND id <= (SELECT MIN(id) FROM yourTable WHERE b = 'F' AND id >= 4)

Všimněte si, že to předpokládá, že poslední záznam je vždy 'F'. Můžete se vypořádat s tím, že poslední záznam je 'T' pomocí COALESCE .

SELECT
  *
FROM
  yourTable
WHERE
      id >= 4
  AND id <= COALESCE(
              (SELECT MIN(id) FROM yourTable WHERE b = 'F' AND id >= 4),
              (SELECT MAX(id) FROM yourTable                          )
            )



  1. postgresql ekvivalentní $mysqli->insert_id

  2. Můžeme použít migrace EF s MySql

  3. Detekce cyklických odkazů v SQL

  4. Je fulltextové vyhledávání odpovědí?