sql >> Databasteknik >  >> RDS >> PostgreSQL

PL/pgSQL kontrollerar om en rad finns

Enklare, kortare, snabbare: EXISTS .

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

Frågeplaneraren kan stanna vid den första raden som hittas - i motsats till count() , som kommer att skanna alla (matchande) rader oavsett. Gör skillnad med stora bord. Skillnaden är liten för ett villkor i en unik kolumn:bara en rad kvalificerar sig och det finns ett index för att snabbt slå upp det.

Du kan bara använda en tom SELECT lista:

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

SELECT list har inget inflytande på resultatet av EXISTS . Endast förekomsten av minst en kvalificerande rad spelar roll.



  1. SQLite ingen sådan kolumn

  2. T-SQL vs SQL

  3. Vila dialekt för Oracle Database 11g?

  4. 4 sätt att lista alla vyer i en MariaDB-databas