SQL lekérdezés, számolás és csoportosítás

original title: "SQL query, count and group by"

Translate

If I have data like this:

``````+---+----+
|Key|Name|
+---+----+
|1  |Dan |
+---+----+
|2  |Tom |
+---+----+
|3  |Jon |
+---+----+
|4  |Tom |
+---+----+
|5  |Sam |
+---+----+
|6  |Dan |
+---+----+
``````

What is the SQL query to bring back the records where `Name` is repeated 2 or more times?

So the result I would want is

`````` +---+
|Tom|
+---+
|Dan|
+---+
``````

Ha ilyen adataim vannak: + --- + ---- + | Kulcs | Név | + --- + ---- + | 1 | Dan | + --- + ---- + | 2 | Tom | + --- + ---- + | 3 | Jon | + --- + ---- + | 4 | Tom | + --- + ---- + | 5 | Sam | + --- + ---- + | 6 | Dan | + --- + ---- + Wh ...

Ez az összefoglalás a fordítás után. Ha meg szeretné tekinteni a teljes fordítást, kattintson a "fordítás" ikonra

Minden válasz
• Translate

Couldn't be simpler...

``````Select
Name,
Count(Name) As Count
From
Table
Group By
Name
Having
Count(Name) > 1
Order By
Count(Name) Desc
``````

This could also be extended to delete duplicates:

``````Delete
From
Table
Where
Key In (
Select
Max(Key)
From
Table
Group By
Name
Having
Count(Name) > 1)
``````

• Translate
``````select name from table group by name having count(name) > 1
``````

• Translate

This could also be accomplished by joining the table with itself,

``````SELECT DISTINCT t1.name
FROM    tbl t1
INNER JOIN tbl t2
ON      t1.name = t2.name
WHERE   t1.key         != t2.key;
``````