【问题标题】:Compare rows in SQL比较 SQL 中的行
【发布时间】:2013-10-22 01:07:02
【问题描述】:

我有一个这样的示例表。

ID           Name
1            Jane  
2            John
3            Kevin
4            George
5            Jane

我想从查询中得到的结果是一个包含两个值的表:

ID           Name
1            Jane
5            Jane

我知道这可以使用表的 2 个副本然后比较一个表和另一个表的名称来完成,但是我无法使其正常工作。

--

抱歉,没有添加这个。我想获取所有重复值。

我可以看到所有关于重复等的响应,我在 stackoverflow 上看到了关于使用 count(*) 查找重复项的帖子,但我想知道是否可以通过创建表的两个副本来完成(比如 t 和tt) 然后检查 t.name = tt.name?

【问题讨论】:

  • 您事先知道名称还是想要所有重复值?
  • 你需要先表现出一些努力;我想说人们不会在没有先付出努力的情况下给出答案,但这显然不是这里的情况:P(在任何人有任何想法并决定报复之前,今天再次对我投反对票,不,我没有拒绝任何答案,尽管受到诱惑)
  • 我已经尝试解决这个问题 2 个小时了。这很简单,但无法正常工作。我尝试过内部连接,获取两个表,然后在 WHERE 子句中检查名称是否匹配 - 不幸的是它不起作用。因此我的问题在这里。
  • @Neutrino 您可以使用内部连接查看我的答案。

标签: sql compare


【解决方案1】:

我通常建议在代码中使用Joins 而不是exist,in or not in

 Select A.ID,B.Name from Tablename A
    inner join Tablename B
    on A.Name = B.Name
     where a.id <> b.id 

我通常不建议这样做,通常应该加入 ID 而不是名称。 这是DEMO

【讨论】:

  • @Neutrino &lt;&gt; 有什么问题? &lt;&gt; 表示not equal!=,如果您不想要&lt;&gt; 这个词,请尝试使用那些我只是不确定这些,因为我通常使用&lt;&gt;
  • 这并没有什么问题,只是我发布的问题是我大学作业的一部分,在以前的任务中没有使用过,所以我觉得很尴尬。
  • 您可以在 Internet 上找到 &lt;&gt; 的替代品。但是“不等于”这个词具有相同的功能
【解决方案2】:

一种方法是使用EXISTS()

SELECT  *
FROM    tablename a
WHERE   EXISTS
        (
            SELECT  1
            FROM    tableName b
            WHERE   a.Name = b.name
            GROUP   BY Name
            HAVING  COUNT(*) > 1
        )

【讨论】:

    【解决方案3】:

    试试这个

    SELECT ID, Name
    FROM table1
    WHERE Name IN
     (SELECT Name
      FROM table1
      GROUP BY Name
      HAVING COUNT(ID) > 1
     )
    ORDER BY ID
    

    【讨论】:

    • @downvoter,请解释一下,您认为这个答案有什么问题吗?
    • 这里有不合理的反对者,我的回答也被反对了 6 次 -_-
    【解决方案4】:
    SELECT A.*
    FROM SAMPLE_TABLE A,
    (
    SELECT NAME,COUNT(*)
    FROM SAMPLE_TABLE
    GROUP BY NAME
    HAVING COUNT(*) > 1
    ) B
    WHERE A.NAME = B.NAME;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 2014-05-26
      • 1970-01-01
      相关资源
      最近更新 更多