সংক্ষিপ্ত, দ্রুত (বিশেষত অনেকগুলি সারি সহ), আমার পঠনযোগ্যতা সম্পর্কিত প্রিয় এবং ডুপসের সাথেও কাজ করবে:
SELECT count(*) = 1 AND min(val) = 1 FROM foo;
রিটার্ন TRUE
/ FALSE
.. অথবা NULL
- শুধুমাত্র এক সারি এর ক্ষেত্রে val IS NULL
, কারণ count()
কখনই ফিরে আসে না NULL
বা কোনও সারি হয় না।
1
উদাহরণের মধ্যে দ্বিতীয়টি প্রথমটির মতোই ঘটবে, কারণ আপনার উদাহরণ।
প্রশ্নের ক্যোয়ারী NULL
মানগুলির সাথে ব্যর্থ হয় । সাধারণ ডেমো বিবেচনা করুন:
CREATE TABLE foo (id int, val int);
INSERT INTO foo VALUES (1, 1),(2, NULL);
SELECT 'yes'
WHERE EXISTS(SELECT * FROM foo WHERE val = 1)
AND NOT EXISTS(SELECT * FROM foo WHERE val <> 1);
IS DISTINCT FROM
এটি ঠিক করে দেবে, তবে এটি অনুলিপিতে এখনও ব্যর্থ হতে পারে val
- যা আপনি এই মামলার পক্ষে অস্বীকার করেছেন।
আপনার উত্তর ভাল কাজ করে।
ফিরে আসে 'yes'
/ সারি নেই।
যদিও আমি এই সংক্ষিপ্ত রূপটি পছন্দ করব। ভুলে যাবেন না যে পোস্টগ্রিসএসকিউএল (ওরাকলের বিপরীতে) একটি সঠিক boolean
ধরণ রয়েছে ।
SELECT array_agg(val) = array[1] FROM foo;
রিটার্ন TRUE
/ FALSE
/ NULL
।