Istalgan qiymat bilan taqqoslash
Kirish: Ushbu qo'llanmada siz PostgreSQL ANY operatori yordamida qiymatni quyi so'rov qaytargan qiymatlarning kamida bittasi bilan taqqoslashni o'rganasiz.
PostgreSQLda ANY operatori qiymatni quyi so'rov natijalari to'plami bilan solishtiradi. Agar taqqoslash to'plamdagi kamida bitta qiymat uchun to'g'ri (true) bo'lsa, ANY operatori true qaytaradi.
ANY operatorining sintaksisi:
value operator ANY(subquery)
Ushbu sintaksisda:
value — tekshirilayotgan ustun yoki ifoda;operator — taqqoslash operatori (=, <, >, <=, >=, !=);subquery — bitta ustunli natija qaytaruvchi quyi so'rov.PostgreSQLda SOME va ANY to'liq sinonimlar hisoblanadi, ularni bir-birining o'rnida ishlatishingiz mumkin.
E'tibor bering: = ANY(subquery) ifodasi IN (subquery) bilan aynan bir xil ma'noni anglatadi.
Dastlab namunaviy products jadvalini yaratamiz:
CREATE TABLE products (
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
name VARCHAR(50) NOT NULL,
price DEC(11, 2) NOT NULL CHECK (price > 0),
brand VARCHAR(50) NOT NULL
);
INSERT INTO
products (name, price, brand)
VALUES
('Galaxy S24', 799.99, 'Samsung'),
('iPhone 16', 1099.99, 'Apple'),
('iPhone 16 Pro Max', 1399.99, 'Apple'),
('iPhone 16 Plus', 1199.99, 'Apple'),
('Galaxy S24 Ultra', 1299.99, 'Samsung'),
('Galaxy S24 Plus', 1119.99, 'Samsung');
Quyidagi so'rov Apple mahsulotlarining istalgan birortasidan qimmatroq bo'lgan tovarlarni topadi:
SELECT
name,
brand,
price
FROM
products
WHERE
price > ANY (
SELECT
price
FROM
products
WHERE
brand = 'Apple'
);
Natija:
name | brand | price
-------------------+---------+---------
iPhone 16 Pro Max | Apple | 1399.99
iPhone 16 Plus | Apple | 1199.99
Galaxy S24 Ultra | Samsung | 1299.99
Galaxy S24 Plus | Samsung | 1119.99
[1099.99, 1399.99, 1199.99].>) bo'lishini tekshiradi.Yuqoridagi so'rovni MIN() agregat funksiyasi yordamida quyidagicha qayta yozish mumkin:
SELECT
name,
brand,
price
FROM
products
WHERE
price > (
SELECT
MIN(price)
FROM
products
WHERE
brand = 'Apple'
);
Ichki so'rov Apple mahsulotlarining eng past narxini (1099.99) topadi, tashqi so'rov esa narxi undan yuqori bo'lgan mahsulotlarni tanlab oladi.
true olish uchun ANY(subquery) dan foydalaning.= ANY bu IN bilan bir xil.> ANY to'plamdagi eng kichik qiymatdan kattalikni (> MIN), < ANY esa eng katta qiymatdan kichiklikni (< MAX) bildiradi.