我需要帮助来获得针对这种情况的解决方案。我有一个包含记录的表,有一个字段 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 的所有行。
id
和 sku
可以互换吗?我不清楚。 (如果 id
依赖于 sku
而 sku
依赖于 id
,那么你可以替换对 sku
并在该查询中引用 id
。
关于php - SQL语句选择出现次数超过2次的重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14541307/