我想建立一个mysql查询来列出所有列a有一个重复列b从一个表。诀窍是我有行上的时间戳,所以我需要基本上确定哪些是较旧的重复项,所以我可以删除它。任何帮助,将不胜感激。mysql查询根据时间戳识别和删除重复项
回答
只是例子 - 该查询返回重复的帖子,现在你只需要执行删除
id| title | text_desc | created
-------------------------------------------------------
1 | The title | description here |2012-02-21 10:58:58
2 | The title | description here 1 |2012-02-21 10:58:58
3 | The title | description here 3 |2012-02-21 10:58:58
select bad_rows.*
from posts as bad_rows
inner join (
select title, MIN(id) as min_id
from posts
group by title
having count(*) > 1
) as good_rows on good_rows.title = bad_rows.title
and good_rows.min_id <> bad_rows.id;
这里是返回行
id| title | text_desc | created
-------------------------------------------------------
2 | The title | description here 1 |2012-02-21 10:58:58
3 | The title | description here 3 |2012-02-21 10:58:58
感谢您添加视觉示例,使其易于遵循 – 2012-03-09 20:13:01
SELECT FOOCODE,COUNT(*) AS DUPS
FROM TABLE
GROUP BY FOOCODE
HAVING COUNT(FOOCODE)>1;
上面的查询将返回ü所有的重复。这是你在找什么?
嗯,这会给我的列和计数的出现正确吗?可以说有些事情发生了3次......我需要确定老的事件,所以我可以删除它们并保留最新的一个。 – 2012-03-09 19:06:04
所以你有一个时间戳列存在每个dup ...?你可以复制你的数据ñ发布它... – Teja 2012-03-09 19:07:18
我有一个时间戳。数据将沿着列a == fooprodcode,列b == foodescription,列c == foosku,列d == footimestamp的行显示。这有帮助吗?所以可以说我们有一个重复的SKU。我需要识别重复的sku,为此重复的sku组中的时间戳排序,并确定哪个是最新的时间戳记,以便我可以删除该重复组中较旧的所有记录? Idk,如果我解释得很好。让我知道 – 2012-03-09 19:15:49
这是你的查询:
DELETE FROM tablename
WHERE id IN
(SELECT t1.id
FROM tablename t1
JOIN tablename t2
ON t2.cola = t1.cola AND t2.colb = t1.colb
AND t2.timecol > t1.timecol
WHERE t1.cola = t1.colb)
的SELECT语句返回那里cola = colb
并有与稍后的日期等匹配的行记录。 DELETE语句删除SELECT返回的所有记录。
如果你正在寻找去除重复cola
,那么这是查询:
DELETE FROM tablename
WHERE id IN
(SELECT t1.id
FROM tablename t1
JOIN tablename t2
ON t2.cola = t1.cola
AND t2.timecol > t1.timecol)
如果OP确实需要colA = colB,这看起来像他/她正在寻找的答案。 – RumpRanger 2012-03-09 19:19:30
谢谢你的两个查询,我需要花更多的时间研究子查询 – 2012-03-09 20:14:09
我的表名是general2,所以当我运行命令时,我得到这个错误:“你不能指定目标表'general2'在FROM子句中更新”任何建议? – 2015-07-07 13:18:09
- 1. 识别,删除重复项
- 2. 根据R中的条件识别并删除重复项
- 3. 识别重复项并删除
- 4. LINQ查询无法识别重复项
- 5. 根据时间戳间隔过滤MySQL查询结果
- 6. MySQL查询删除时间戳早于当前时间戳的行
- 7. DynamoDB查询/根据时间戳排序
- 8. 如何根据时间戳过滤mySQL查询中的数据?
- 9. Mysql时间戳查询
- 10. mysql php时间戳查询
- 11. mysql查询的时间戳
- 12. mysql时间戳查询
- 13. 根据条件删除重复项
- 14. 用时间戳查询MySQL数据库
- 15. 通过时间戳从LUA表中删除重复项
- 16. mysql时间戳和php查询
- 17. mysql查询根据最新时间戳获取最小值
- 18. mysql查询帮助(根据时间戳选择最新更新)
- 19. MySQL查询删除连字符重复
- 20. 快速MYSQL查询删除重复
- 21. MySQL重复出现年份时间戳查询
- 22. 删除查询中的重复项
- 23. 从linq查询c删除重复项#
- 24. 查询从SQL中删除重复项
- 25. SQL - 删除查询中的重复项
- 26. 计算时间和空间复杂度来删除重复项
- 27. Mysql查询从另一个复制时间戳数据
- 28. 时间戳删除时间和秒
- 29. 识别Kibana和ElasticSearch中的时间戳
- 30. MYSQL查询根据名字和姓氏查找重复记录
后一些示例数据,...,N笏ü甲肝试过.. – Teja 2012-03-09 18:55:51
SELECT *, COUNT(foocode)AS NUMOccurrences FROM表 GROUP BY foocode HAVING(COUNT(foocode)> 1)ORDER BY foolastmodified ASC – 2012-03-09 18:58:11
我对mysql没有太大的支持,在这一点上......显然没有工作我甚至无法看到重复的记录,只是向我展示了专栏和发生的次数,并按时间顺序排列整个事情ps如果我是正确的?我希望它显示重复记录,按列分组,按时间戳排序,然后最终有能力删除旧的副本 – 2012-03-09 18:59:51