PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PL/pgSQL проверка дали съществува ред

По-просто, по-кратко, по-бързо: EXISTS .

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

Инструментът за планиране на заявки може да спре на първия намерен ред - за разлика от count() , което ще сканира всички (съвпадащи) редове независимо. Прави разлика с големите маси. Разликата е малка за условие за уникална колона:само един ред отговаря на изискванията и има индекс, който да го търси бързо.

Можете просто да използвате празен SELECT списък:

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

SELECT списъкът няма влияние върху резултата от EXISTS . Само наличието на поне един квалификационен ред е от значение.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Върнете нула, ако не бъде намерен запис

  2. Как работи AT TIME ZONE в PostgreSQL

  3. psql:не можа да се свърже със сървъра:Връзката е отказана Грешка при свързване към отдалечена база данни

  4. Мащабиране на PostgreSQL с помощта на пулери за връзки и балансьори на натоварване

  5. Не може да се създаде таблица на база данни с име 'user' в PostgreSQL