🛢️
PostgreSQL
Grokking Algorithm
  • Content
  • Environment
  • Getting Started
    • Introduction
      • What is PostgreSQL
      • Introduction to PostgreSQL sample database
    • Postgres on Windows
      • Install PostgreSQL on Windows
      • Connect to PostgreSQL database server
      • Load the sample database into the PostgreSQL database server
    • Postgres on Linux
    • Install PostgreSQL on macOS
  • Basic
    • Querying Data
      • SELECT
      • Column alias
      • ORDER BY
      • SELECT DISTINCT
    • Filtering Data
      • WHERE
      • AND
      • OR
      • LIMIT
      • FETCH
      • IN
      • BETWEEN
      • LIKE
      • IS NULL
    • Joining Multiple tables
      • Joins
      • Table aliases
      • INNER JOIN
      • LEFT JOIN
      • RIGHT JOIN
      • SELF JOIN
      • FULL OUTER JOIN
      • CROSS JOIN
      • NATURAL JOIN
    • Grouping data
      • GROUP BY
      • HAVING
    • Set Operations
      • UNION
      • INTERSECT
      • EXCEPT
    • Grouping sets, Cube, and Rollup
      • Grouping sets
      • CUBE
      • ROLLUP
    • Subquery
      • Subquery
      • ANY
      • ALL
      • EXISTS
    • Common Table Expressions
      • PostgreSQL CTE
      • Recursive query using CTEs
    • Modifying Data
      • Insert
      • Insert multiple rows
      • Update
      • Update join
      • Delete
      • Upsert
    • Transactions
      • PostgreSQL Transaction
    • Import & Export Data
      • Import CSV file into Table
      • Export PostgreSQL Table to CSV file
    • Managing Tables
      • Data types
      • Create a table
      • Select into
      • Create table as
      • Auto-increment
      • Sequences
      • Identity column
      • Alter table
      • Rename table
      • Add column
      • Drop column
      • Change column data type
      • Rename column
      • Drop table
      • Truncate table
      • Temporary table
      • Copy a table
    • Understanding PostgreSQL constraints
      • Primary key
      • Foreign key
      • UNIQUE constraint
      • CHECK constraint
      • NOT NULL constraint
    • PostgreSQL Data Types in Depth
      • Boolean
      • CHAR, VARCHAR and TEXT
      • NUMERIC
      • Integer
      • DATE
      • Timestamp
      • Interval
      • TIME
      • UUID
      • Array
      • hstore
      • JSON
      • User-defined data types
  • Advanced
  • PG-PGSQL
  • Functions
  • Adminstration
  • API
Powered by GitBook
On this page
  • PostgreSQL EXISTS misollari
  • A. Miqdori 11 dan ortiq bo'lgan kamida bitta to'lovga ega bo'lgan mijozlarni toping.
  • B. MAVJUD EMAS misol
  • C. EXISTS and NULL

Was this helpful?

Edit on GitHub
  1. Basic
  2. Subquery

EXISTS

Ushbu qo'llanmada siz quyi so'rovda qatorlar mavjudligini tekshirish uchun PostgreSQL EXISTS operatoridan qanday foydalanishni o'rganasiz.

EXISTS operatori mantiqiy operator bo'lib, quyi so'rovda qatorlar mavjudligini tekshiradi. Quyida EXISTS operatorining sintaksisi tasvirlangan:

EXISTS (subquery)

EXISTS quyi so'rov bo'lgan argumentni qabul qiladi.

Agar quyi so'rov kamida bitta qatorni qaytarsa, EXISTS natijasi to'g'ri bo'ladi. Agar quyi so'rov hech qanday qatorni qaytarmasa, EXISTS natijasi noto'g'ri bo'ladi.

EXISTS operatori ko'pincha o'zaro bog'liq pastki so'rov bilan ishlatiladi.

EXISTS operatorining natijasi satr tarkibiga emas, balki quyi so'rov tomonidan qaytarilgan qatorga bog'liq. Shuning uchun pastki so'rovning SELECT bandida paydo bo'ladigan ustunlar muhim emas.

Shu sababli, umumiy kodlash konventsiyasi EXISTS ni quyidagi shaklda yozishdir:

SELECT 
    column1
FROM 
    table_1
WHERE 
    EXISTS( SELECT 
                1 
            FROM 
                table_2 
            WHERE 
                column_2 = table_1.column_1);

E'tibor bering, agar quyi so'rov NULLni qaytarsa, EXISTS natijasi haqiqatdir.

PostgreSQL EXISTS misollari

A. Miqdori 11 dan ortiq bo'lgan kamida bitta to'lovga ega bo'lgan mijozlarni toping.

Quyidagi bayonot kamida bitta ijara haqini 11 dan ortiq miqdorda to'lagan mijozlarni qaytaradi:

SELECT first_name,
       last_name
FROM customer c
WHERE EXISTS
    (SELECT 1
     FROM payment p
     WHERE p.customer_id = c.customer_id
       AND amount > 11 )
ORDER BY first_name,
         last_name;

So'rov quyidagi natijani qaytaradi:

Ushbu misolda, customer jadvalidagi har bir mijoz uchun quyi soʻrov ushbu mijoz kamida bitta toʻlovni amalga oshirganligini (p.customer_id = c.customer_id) va summa 11 dan (amount > 11) katta ekanligini aniqlash uchun payment jadvalini tekshiradi.

B. MAVJUD EMAS misol

NOT operatori EXISTS operatorining natijasini inkor etadi. NOT EXISTS EXISTS ga qarama-qarshidir. Bu shuni anglatadiki, agar quyi so'rov hech qanday qatorni qaytarmasa, NOT EXISTS haqiqatni qaytaradi.

Quyidagi misol mijozlar 11 dan ortiq to'lovni amalga oshirmaganligini ko'rsatadi.

SELECT first_name,
       last_name
FROM customer c
WHERE NOT EXISTS
    (SELECT 1
     FROM payment p
     WHERE p.customer_id = c.customer_id
       AND amount > 11 )
ORDER BY first_name,
         last_name;

Mana natija:

C. EXISTS and NULL

Agar quyi so'rov NULL qiymatini qaytarsa, EXISTS rostni qaytaradi. Quyidagi misolga qarang:

SELECT
	first_name,
	last_name
FROM
	customer
WHERE
	EXISTS( SELECT NULL )
ORDER BY
	first_name,
	last_name;

Ushbu misolda quyi so'rov NULL qiymatini qaytardi, shuning uchun so'rov mijoz jadvalidagi barcha qatorlarni qaytardi.

Ushbu qo'llanmada siz quyi so'rovda qatorlar mavjudligini tekshirish uchun PostgreSQL EXISTS dan qanday foydalanishni o'rgandingiz.

PreviousALLNextCommon Table Expressions

Last updated 1 year ago

Was this helpful?

Namoyish uchun ma'lumotlar bazasida quyidagi customer va payment jadvallaridan foydalanamiz:

@

namunaviy
postgresqltutorial.com
output
output
output
output