সংক্ষিপ্ত, দ্রুত (বিশেষত অনেকগুলি সারি সহ), আমার পঠনযোগ্যতা সম্পর্কিত প্রিয় এবং ডুপসের সাথেও কাজ করবে:
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।