当前位置: 首页 > 面试题库 >

SQL语句选择重复记录出现两次以上

申屠森
2023-03-14
问题内容

我需要帮助以获取针对这种情况的解决方案。我有一个包含记录的表,有一个字段sku,在此记录中,我有sku出现多次。表结构是这样的rid | id | sku
| name

rid是auto_increment,其中id是varchar,如果表上多次有任何sku可用,则记录看起来像这样

rid  id  sku     name
---  --  ------  --------------
1    3   rs-123  test product
2    3   rs-123  test product
3    4   rs-125  test product 2
4    4   rs-125  test product 2
5    4   rs-125  test product 2
6    6   rs-126  test product 3

我使用此sql语句获取仅出现一次的记录

SELECT *
FROM test
GROUP BY id
HAVING ( COUNT(id) = 1 )

这带来了仅添加一次的记录,因此根据以上给出的记录,仅掉6是输出

我试图将上面的代码修改为此,以获得记录的结果,该记录被添加了2次

    SELECT * FROM test 
GROUP BY id 
HAVING ( COUNT(id) = 2 )

我得到的结果是添加了2次的那些记录,但是问题是输出仅出现1条这样的记录;

rid  id  sku     name
---  --  ------  ------------
1    3   rs-123  test product

我需要获取在数据库中添加了2次的所有记录行。请帮忙


问题答案:
SELECT t.rid
     , t.id
     , t.sku
     , t.name
  FROM test t
  JOIN ( SELECT s.sku 
           FROM test s 
          GROUP BY s.sku
         HAVING COUNT(1) > 1
       ) d
    ON d.sku = t.sku

别名为的内联视图d返回在表中多次出现的sku值。我们可以将该查询的结果连接到表中,以获取具有sku匹配的所有行。

idsku互换?我不清楚。(如果id依赖于skusku并且依赖于id,那么您可以在该查询中将的sku引用替换为对的引用id



 类似资料:
  • 问题内容: 我想选择一堆在大多数情况下都是唯一的记录,但是有一些记录会发生两次。我希望只能选择具有最新日期的记录。到目前为止,这是我的查询: 就检索具有重复项的记录的最新记录而言,这是可行的,但是那些没有重复项的记录根本不会出现。 感谢您的帮助,如果我错过了一些显而易见的事情,我深表歉意。我是SQL游戏的新手。 问题答案: 有几种方法可以执行此操作,一种方法是像这样使用ROW_NUMBER: 这将

  • 本文向大家介绍使用SQL语句去掉重复的记录【两种方法】,包括了使用SQL语句去掉重复的记录【两种方法】的使用技巧和注意事项,需要的朋友参考一下 海量数据(百万以上),其中有些全部字段都相同,有些部分字段相同,怎样高效去除重复? 如果要删除手机(mobilePhone),电话(officePhone),邮件(email)同时都相同的数据,以前一直使用这条语句进行去重: 其中下面这条会稍快些。上面这条

  • 问题内容: Helllo下面的查询在加入多个表后返回所有员工 总计653条记录正在返回 现在执行以下查询后 我发现有135条记录的计数超过1。 如何列出具有多个计数的所有记录? 问题答案:

  • 问题内容: 我在C#项目中将SQLServer用于故障排除程序,并且我有一个包含ID,Question,QuestionId,Solution和Rank的表。我希望有一个问题的多个解决方案,并且程序将选择排名最高的解决方案,该解决方案仅由最高的数字来选择,该数字在每次正确时都会递增。为此,我有以下SQL语句: 当我只有一个可用的解决方案时,它可以很好地工作,但是当我有多个解决方案时,它却不能。 问

  • 我有一个包含和列的表,想知道如何返回一个列,该列显示在当前出现之前出现了多少次。 我已尝试计数(作业编号),但我不知道如何将其设置为仅计数当前报告日期之前的事件。 到目前为止,我不得不将数据导出到excel中,并为报告日期执行一个Countifs 请帮忙!:)

  • 问题内容: 我有一张调查答案表,类似: 并且我想创建一个查询,该查询将为我提供该表的结果摘要,从而允许我设置相关的日期范围。我下面的声明非常有效: 但是我不确定是否可以做得更好,以及在哪里添加日期范围过滤功能。 问题答案: 来自多刺的诺曼的第一个查询将给出这样的结果: 仅将几组不同的结果分组。我假设您想按问题将是/否的总数分类。在这种情况下,您必须执行以下操作: 结果: