【问题标题】:Select duplicate values in one column in a table在表格的一列中选择重复值
【发布时间】:2012-12-11 00:13:29
【问题描述】:

我有这张桌子:

id int, name nvarchar(max), ..............

例子:

 ------------------
| id  | name       |
 ------------------
| 1   | Mohammed   | 
| 2   | Mohammed   |    
| 3   | Sakher     |
| 4   | Sakher     |
| 5   | Ahmad      |
| 6   | Ahmad      |
| 11  | Hasan      |
| 50  | Hasan      |
| 17  | Sameer     |
| 19  | Soso       |
| 110 | Omar       |
| 113 | Omar       |
| 220 | Omar       |
 ------------------

我正在尝试编写一个查询来得到这个结果:

id1 int , id2 int , name nvarchar(max)

例子:

 ------------------------
| id1 | id2 | name       |
 ------------------------
|  1  |  2  | Mohammed   |
|  3  |  4  | Sakher     |
|  5  |  6  | Ahmad      |
| 11  |  50 | Hasan      |
| 110 | 113 | Omar       |
| 110 | 220 | Omar       |
| 113 | 220 | Omar       |
 ------------------------

返回其中一列中的重复项。 我更喜欢 SQL Server 查询或标准 ANSI SQL 查询。

【问题讨论】:

  • 请在投反对票时发表评论!
  • “我需要一个查询。”仅仅要求别人为你做你的工作太接近了;如果语气改变,将很乐意撤销。
  • 到目前为止你做了什么?另外,为什么 Omar 在结果中仍然有 3 行?我想我不明白你想要什么。更多细节
  • 不,这是一个非常普遍的问题,不是功课!
  • @MSakherSawan 。 . .你能解释一下为什么你想要所有的重复对吗?在大多数应用程序中,您只需要重复列表。

标签: mysql sql sql-server oracle


【解决方案1】:
Select count(*), name
from someTable
group by name
having count(*) > 1

将为您提供所有重复的名称以及重复的数量,并且可能比您请求的名称更有用。为此,您可以执行以下操作:

Select a.id, b.id, a.name
from someTable a
 inner join someTable b
on a.id <> b.id and a.name = b.name

【讨论】:

    【解决方案2】:

    此查询返回您要求的内容。比较 n1.id > n2.id 比这样做更好 n1.id != n2.id 因为这样你会得到每对两次(第二次,相反):

    SELECT 
        n1.id as Col1, n2.id as Col2, n1.name
    FROM 
        Names n1, Names n2
    WHERE 
        n1.name = n2.name 
        AND n1.id > n2.id
    

    【讨论】:

    • 只是renaming n1.id as col1, n2.id as col2 的问题;)否则一切都好。
    • 好点。我也意识到使用可能会更好,但结果仍然有效。
    • 我编辑了您的查询以完全匹配 OP 的需求,因为您的答案完美而简单。添加了sqlfiddle的demo,很不错的工具!
    • 太棒了,尤其是 sqlfiddle!
    猜你喜欢
    • 2013-04-17
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 2020-02-03
    • 2020-02-12
    • 1970-01-01
    相关资源
    最近更新 更多