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

我需要帮助以获取针对这种情况的解决方案。我有一个包含记录的表,有一个字段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语句选择重复记录出现两次以上 的全部内容, 来源链接: utcz.com/qa/399576.html

回到顶部