سؤال
إذا كان لدي بيانات مثل هذا:
+---+----+
|Key|Name|
+---+----+
|1 |Dan |
+---+----+
|2 |Tom |
+---+----+
|3 |Jon |
+---+----+
|4 |Tom |
+---+----+
|5 |Sam |
+---+----+
|6 |Dan |
+---+----+
ما هو استعلام SQL لإعادة السجلات حيث Name
يتكرر 2 مرات أو أكثر؟
وبالتالي فإن النتيجة التي أريدها هي
+---+
|Tom|
+---+
|Dan|
+---+
المحلول
لا يمكن أن يكون أبسط...
Select
Name,
Count(Name) As Count
From
Table
Group By
Name
Having
Count(Name) > 1
Order By
Count(Name) Desc
يمكن أيضًا توسيع هذا لحذف التكرارات:
Delete
From
Table
Where
Key In (
Select
Max(Key)
From
Table
Group By
Name
Having
Count(Name) > 1)
نصائح أخرى
select name from table group by name having count(name) > 1
ويمكن تحقيق ذلك أيضًا من خلال ضم الجدول مع نفسه،
SELECT DISTINCT t1.name
FROM tbl t1
INNER JOIN tbl t2
ON t1.name = t2.name
WHERE t1.key != t2.key;
لا تنتمي إلى StackOverflow