اگر بخواهیم رکوردهایی از یک جدول را که دارای دو فیلد مشابه هستند را بازیابی کنیم به چه صورت می باشد.مثلا دو فیلد نام وتاریخ مشترکی هستند
اگر بخواهیم رکوردهایی از یک جدول را که دارای دو فیلد مشابه هستند را بازیابی کنیم به چه صورت می باشد.مثلا دو فیلد نام وتاریخ مشترکی هستند
سلام دوست عزیز،
بسیار ساده است:
SELECT * FROM MyTable
WHERE MyTable.Field1 = MyTable.Field2
،/
I've just started tweeting!
@Alireza_Maddah
select * from table_
SELECT *
FROM table_ AS t1
WHERE EXISTS (SELECT *
FROM Table_ AS t2
WHERE t1.[name]=t2.[name]
AND t1.family=t2.family
AND t1.ID <> t2.ID)
/*
--INPUT
id name family
----------- ---------- ----------
1362 akbar amini
1365 reza abasi
1370 akbar amini
--OUTPUT
id name family
----------- ---------- ----------
1362 akbar amini
1370 akbar amini
*/
وبلاگ من (Advanced SQL Querying)
خواهشا در مورد كاربرد اين كدها تو سي شارپ برام پيام بفرستيد
جناب اسدي ايشون ميخوان ركوردهايي كه اين خاصيت رو دارن انتخاب بشن. نه يك نمونه خاص !
جواب در پست شماره 4 داده شده . بعنوان راه حل ديگه ميتونيد از join استفاده كنيد كه البته از لحاظ سرعت فرق چنداني با روش ذكر شده نداره
ُSelect * from Table1 t1
inner join Table1 t2 on t1.[name]=t2.[name]
and t1.family=t2.family
and t1.ID <> t2.ID .
آره حق با شماست آقا حميد، من سوال رو اشتباه متوجه شدم. جواب هايي كه جناب msalim و شما دادين درسته. البته در روشي كه شما استفاده كردين، هم تعداد ستون هاي خروجي زياد ميشه (تمام فيلدها دوباره تكرار ميشن) و هم سطرهاي تكراري خواهيم داشت. بهتره به جاي * اسم فيلدها رو بذاريم و با استفاده از Distinct رديف هاي تكراري رو حذف كنيم و همچنين از order by براي كنار هم قرار دادن ركوردهاي مشابه استفاده كنيم:
SELECT DISTINCT t1.id, t1.name, t1.family, t1.tarikh
FROM Table1 t1 INNER JOIN
Table1 t2 ON t1.name = t2.name AND t1.family = t2.family AND t1.id <> t2.id
ORDER BY t1.name, t1.family