sql >> Database teknologi >  >> RDS >> PostgreSQL

PL/pgSQL kontrollerer om der findes en række

Enklere, kortere, hurtigere: EXISTS .

IF EXISTS (SELECT 1 FROM people p WHERE p.person_id = my_person_id) THEN
  -- do something
END IF;

Forespørgselsplanlæggeren kan stoppe ved den første række fundet - i modsætning til count() , som vil scanne alle (matchende) rækker uanset. Gør en forskel med store borde. Forskellen er lille for en betingelse i en unik kolonne:kun én række kvalificerer sig, og der er et indeks til hurtigt at slå det op.

Du kan bare bruge en tom SELECT liste:

IF EXISTS (SELECT FROM people p WHERE p.person_id = my_person_id) THEN ...

SELECT listen har ingen indflydelse på resultatet af EXISTS . Kun eksistensen af ​​mindst én kvalificerende række har betydning.



  1. MariaDB DEFAULT() Forklaret

  2. SQLSTATE[HY000] [1045] Adgang nægtet for brugeren 'brugernavn'@'localhost' ved hjælp af CakePHP

  3. Hvordan indsætter man en opdaterbar post med JSON-kolonne i PostgreSQL ved hjælp af JOOQ?

  4. Sådan fungerer SQLite Random()