php - SQL语句选择出现次数超过2次的重复记录

标签 php mysql sql

我需要帮助来获得针对这种情况的解决方案。我有一个包含记录的表,有一个字段 sku,在这个记录中我有多次出现的 sku。 表结构是这样的 删除|id|sku|名称

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 )

这带来了只添加一次的记录,所以根据上面的 give record only rid 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 的内联 View 返回在表中多次出现的 sku 值。我们可以将该查询的结果连接到表中,以获取具有匹配 sku 的所有行。

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

关于php - SQL语句选择出现次数超过2次的重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14541307/

相关文章:

php - zend smtp 邮件在 100 多封邮件后崩溃

javascript - 立即将 csv 文件中的数据显示到 handontable

javascript - 打造充满活力的足球场

java - Java 中带序列化的链表

mysql - UPDATE MySQL 查询执行时间较长 - 优化方法

java - 标准 Hibernate 排序依据

php - 从 php 请求中获取一组值并运行 mysql 查询

mysql - 使用 group by 和不使用 group by 时查询结果的差异

mysql - 比较来自不同表的两个值 - MySql

sql - 我可以在同一个表上有两个不同的插入触发器吗?