উত্তর:
SELECT t1.name
FROM table1 t1
LEFT JOIN table2 t2 ON t2.name = t1.name
WHERE t2.name IS NULL
প্রশ্ন : এখানে কী হচ্ছে?
উত্তর : ধারণাগতভাবে, আমরা সমস্ত সারি নির্বাচন করি table1
এবং প্রতিটি সারির জন্য আমরা কলামের table2
জন্য একই মান সহ একটি সারি সন্ধান করার চেষ্টা করি name
। যদি এরকম কোনও সারি না থাকে, আমরা কেবল table2
আমাদের ফলাফলের অংশটি সেই সারির জন্য খালি রাখি । তারপরে আমরা কেবল সেই সারিগুলিকে বাছাই করে আমাদের নির্বাচনকে বাধা দিই যেখানে ফলাফলের সাথে মিলের সারি বিদ্যমান নেই। অবশেষে, আমরা name
কলাম ব্যতীত (আমাদের যে নিশ্চিত যে বিদ্যমান তা থেকে, table1
) বাদে আমরা আমাদের ফলাফল থেকে সমস্ত ক্ষেত্রকে উপেক্ষা করি ।
যদিও এটি সব ক্ষেত্রে সবচেয়ে কার্যকর পদ্ধতি নাও হতে পারে তবে এটি এএনএসআই 92 এসকিউএল বাস্তবায়নের চেষ্টা করে এমন প্রতিটি ডাটাবেস ইঞ্জিনে মূলত কাজ করা উচিত should
আপনি হয় করতে পারেন
SELECT name
FROM table2
WHERE name NOT IN
(SELECT name
FROM table1)
অথবা
SELECT name
FROM table2
WHERE NOT EXISTS
(SELECT *
FROM table1
WHERE table1.name = table2.name)
এটি সম্পাদন করার জন্য 3 টি কৌশলটির জন্য এই প্রশ্নটি দেখুন
২ য় উত্তরের ভোট দেওয়ার মতো পর্যাপ্ত রেপ পয়েন্ট আমার কাছে নেই। তবে আমি উপরের উত্তরের মন্তব্যগুলির সাথে একমত নই। দ্বিতীয় উত্তর:
SELECT name
FROM table2
WHERE name NOT IN
(SELECT name
FROM table1)
অনুশীলনে আরও দক্ষ আমি জানি না তবে আমি এটি 800k + রেকর্ডের বিপরীতে চালাচ্ছি এবং উপরের পোস্টের দ্বিতীয় উত্তরটি দেওয়া সুবিধাটি দিয়ে পার্থক্যটি দুর্দান্ত। শুধু আমার 0.02 ডলার
এটি খাঁটি সেট তত্ত্ব যা minus
অপারেশন দিয়ে আপনি অর্জন করতে পারেন ।
select id, name from table1
minus
select id, name from table2
SELECT <column_list>
FROM TABLEA a
LEFTJOIN TABLEB b
ON a.Key = b.Key
WHERE b.Key IS NULL;
https://www.cloudways.com/blog/how-to-join-two-tables-mysql/
সমস্যার জন্য সতর্কতা অবলম্বন করুন। ক্ষেত্র তাহলে Name
মধ্যে Table1
NULLs ধারণ আপনি চমকের মুখোমুখি হতে যাচ্ছে। আরও ভাল:
SELECT name
FROM table2
WHERE name NOT IN
(SELECT ISNULL(name ,'')
FROM table1)
এখানে আমার পক্ষে সবচেয়ে ভাল কাজ করেছে।
SELECT *
FROM @T1
EXCEPT
SELECT a.*
FROM @T1 a
JOIN @T2 b ON a.ID = b.ID
আমার চেষ্টা করা অন্য পদ্ধতিগুলির তুলনায় এটি দ্বিগুণেরও বেশি দ্রুত ছিল।
আপনি EXCEPT
এমএসকিউএল বা ওরাকলে ব্যবহার করতে পারেন MINUS
, সেগুলি অনুসারে অভিন্ন:
আমার পক্ষে কাজটি তীক্ষ্ণ
SELECT *
FROM [dbo].[table1] t1
LEFT JOIN [dbo].[table2] t2 ON t1.[t1_ID] = t2.[t2_ID]
WHERE t2.[t2_ID] IS NULL
আমি সঠিক পোস্টে পুনরায় পোস্ট করতে যাচ্ছি (যেহেতু আমি মন্তব্য করার মতো যথেষ্ট শীতল নই) .... যদি অন্য কেউ মনে করে এর আরও ভাল ব্যাখ্যা করার দরকার আছে।
SELECT temp_table_1.name
FROM original_table_1 temp_table_1
LEFT JOIN original_table_2 temp_table_2 ON temp_table_2.name = temp_table_1.name
WHERE temp_table_2.name IS NULL
এবং আমি এমআরএসএল-তে টেবিলের নামগুলির মধ্যে কমাগুলির প্রয়োজন থেকে ফ্রেমে সিনট্যাক্সটি দেখেছি তবে স্কেললাইটে মনে হচ্ছে এটি স্থানটিকে পছন্দ করবে।
নীচের লাইনটি যখন আপনি খারাপ পরিবর্তনশীল নাম ব্যবহার করেন এটি প্রশ্ন ফেলে leaves আমার পরিবর্তনগুলি আরও বোধ করা উচিত। এবং কারও কাছে ব্যাখ্যা করা উচিত যে আমাদের কেন কমা বা কমা নেই।
আপনি যদি নির্দিষ্ট ব্যবহারকারী নির্বাচন করতে চান
SELECT tent_nmr FROM Statio_Tentative_Mstr
WHERE tent_npk = '90009'
AND
tent_nmr NOT IN (SELECT permintaan_tent FROM Statio_Permintaan_Mstr)
tent_npk
একটি ব্যবহারকারী একটি প্রাথমিক চাবিকাঠি