مقایسه رکورد های دو جدول در SQL Server
یکی بهترین راه های برای مقایسه دو جدول مشابه و پیدا کردن رکورد های غیر مشابه و غیر تکراری استفاده از دستور Except می باشد ، مثلا یک نسخه بکاپ قدیمی تر از یک دیتابیس را داریم و میخواهیم دیتای این دیتابیس با دیتابیس کنونی را مقایسه کنیم یکی از راحت ترین راه ها استفاده از این دستور می باشد . معمولا شماهده شده بیشتر کد نویسان عزیز از روش زیر برای پیدا کردن غیر همسان در دو جدول مشابه استفاده می کنند :
SELECT field1,
field2
FROM #Tbl_Test1
WHERE NOT EXISTS (
SELECT *
FROM #Tbl_Test2
WHERE #Tbl_Test1.field1 = #Tbl_Test1.field1
AND ##Tbl_Test1.field2 = #Tbl_Test2. field2
)
روش راحت تر وتمیز تر این کار استفاده از کوئری زیر است :
SELECT field1, field2 FROM #Tbl_Test1
EXCEPT
SELECT field1, field2 FROM #Tbl_Test2
روش کار به این شکل است که این دستور رکورد های تعیین شده کوئری بالایی رو با کوئری پایینی مقایسه کرده و مواردی که در پایین نیست را نمایش می دهد . در این دستور می بایست هر دو جدول مشابه هم باشد . برعکس این حالت اگر میخواهیم اشتراک دو جدول را بگیریم و رکورد های مشابه در دو جدول یکسان را پیدا کنیم می توانیم از دستور Intersect استفاده کنیم .
برای مقایسه رکوردهای دو جدول در SQL Server، میتوانید از عبارت SQL JOIN و عبارت WHERE استفاده کنید. در زیر دو روش متداول برای مقایسه رکوردهای دو جدول را توضیح میدهم:
1. استفاده از INNER JOIN:
در این روش، از عملگر INNER JOIN برای اتصال دو جدول بر اساس یک شرط استفاده میشود. این روش تنها رکوردهایی را نمایش میدهد که در هر دو جدول وجود دارند. به عنوان مثال، فرض کنید دو جدول “Customers” و “Orders” داریم که فیلد “CustomerID” را به عنوان کلید اصلی در هر دو جدول دارند. برای مقایسه رکوردهایی که در هر دو جدول وجود دارند، میتوانید از عبارت زیر استفاده کنید:
“`sql
SELECT Customers.CustomerID, Customers.CustomerName, Orders.OrderID, Orders.OrderDate
FROM Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
“`
این کوئری تمام رکوردهایی را که در هر دو جدول موجود هستند، بازیابی میکند و ستونهای مشخص شده را نمایش میدهد.
2. استفاده از WHERE:
در این روش، از عبارت WHERE برای مقایسه فیلدهای مشابه در دو جدول استفاده میشود. این روش میتواند برای مقایسه رکوردهایی که در هر دو جدول وجود دارند، یا مقایسه رکوردهایی که در یک جدول وجود دارند اما در جدول دیگر وجود ندارند، استفاده شود. به عنوان مثال، برای مقایسه رکوردهایی که در جدول “Customers” وجود دارند و در جدول “Orders” وجود ندارند، میتوانید از عبارت زیر استفاده کنید:
“`sql
SELECT Customers.CustomerID, Customers.CustomerName
FROM Customers
WHERE NOT EXISTS (
SELECT 1
FROM Orders
WHERE Orders.CustomerID = Customers.CustomerID
);
“`
این کوئری تمام رکوردهایی را که در جدول “Customers” وجود دارند و در جدول “Orders” وجود ندارند، بازیابی میکند.
با استفاده از این روشها میتوانید رکوردهای دو جدول را مقایسه کنید و نتایج را با توجه به نیاز خود فیلتر کنید.
دیدگاه ها 1