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匹配的所有行。
是id
和sku
互换?我不清楚。(如果id
依赖于sku
,sku
并且依赖于id
,那么您可以在该查询中将的sku
引用替换为对的引用id
。
以上是 SQL语句选择重复记录出现两次以上 的全部内容, 来源链接: utcz.com/qa/399576.html