একটি বিকল্প হ'ল নিম্নলিখিত ফর্মটিতে দুটি টেবিলের মধ্যে পূর্ণ আউটর জয়েন ব্যবহার করুন:
SELECT count (1)
FROM table_a a
FULL OUTER JOIN table_b b
USING (<list of columns to compare>)
WHERE a.id IS NULL
OR b.id IS NULL ;
উদাহরণ স্বরূপ:
CREATE TABLE a (id int, val text);
INSERT INTO a VALUES (1, 'foo'), (2, 'bar');
CREATE TABLE b (id int, val text);
INSERT INTO b VALUES (1, 'foo'), (3, 'bar');
SELECT count (1)
FROM a
FULL OUTER JOIN b
USING (id, val)
WHERE a.id IS NULL
OR b.id IS NULL ;
2 এর গণনা ফিরিয়ে দেবে, যদিও:
CREATE TABLE a (id int, val text);
INSERT INTO a VALUES (1, 'foo'), (2, 'bar');
CREATE TABLE b (id int, val text);
INSERT INTO b VALUES (1, 'foo'), (2, 'bar');
SELECT count (1)
FROM a
FULL OUTER JOIN b
USING (id, val)
WHERE a.id IS NULL
OR b.id IS NULL ;
0 গণনার জন্য প্রত্যাশাকে প্রত্যাবর্তন করে।
এই পদ্ধতিটি সম্পর্কে আমি যে জিনিসটি পছন্দ করি তা হ'ল এটি কেবলমাত্র প্রতিটি টেবিলটি একবার বনাম বনাম প্রতি সারণি দুটি বার পড়া প্রয়োজন যখন উপস্থিতি ব্যবহার করার সময়। অতিরিক্তভাবে, এটি এমন কোনও ডাটাবেসের জন্য কাজ করা উচিত যা সম্পূর্ণ বাইরের সাথে যোগ দেয় (কেবল পোস্টগ্রেস্কল নয়) supports
আমি সাধারণত ব্যবহারের ধারাটি ব্যবহারকে নিরুৎসাহিত করি তবে এখানে এমন একটি পরিস্থিতি যেখানে আমি বিশ্বাস করি এটি আরও ভাল পদ্ধতির বলে মনে হয়।
সংযোজন 2019-05-03:
যদি সম্ভাব্য নাল ডেটা নিয়ে কোনও সমস্যা থাকে, (যেমন আইডি কলামটি নয় তবে ভাল হয়) তবে আপনি নিম্নলিখিতটি চেষ্টা করতে পারেন:
SELECT count (1)
FROM a
FULL OUTER JOIN b
ON ( a.id = b.id
AND a.val IS NOT DISTINCT FROM b.val )
WHERE a.id IS NULL
OR b.id IS NULL ;
EXCEPT
এই প্রশ্নটি ব্যবহার করতে পারেন : এসকিউএলে দুটি বড় ডেটা সেট তুলনা করার একটি কার্যকর উপায়