使用mysql在临时表中显示每个组的重复项
Posted
技术标签:
【中文标题】使用mysql在临时表中显示每个组的重复项【英文标题】:show duplicates from each group in temporary table using mysql 【发布时间】:2013-09-26 12:30:54 【问题描述】:有人可以帮助我使用 mysql 查询以使用 mysql 在临时表中显示每个组的重复项
sqlfiddle http://sqlfiddle.com/#!2/d8c9c/17
表格
TOWN ID1
town1 1
town1 1
town1 4
town2 1
town2 5
town2 8
town3 1
town3 3
town3 3
要求的结果
TOWN ID1
town1 1
town1 1
town3 3
town3 3
我已尝试 SELECT * FROM Table1 group by TOWN,ID1 但这会删除重复项并显示非重复记录
【问题讨论】:
GROUP BY ... WHERE COUNT > 1
请编辑问题以包括您已经尝试过的查询、他们给您的输出以及与您的预期输出有何不同。
@EricHotinger 你能输入完整的查询吗?
@Clive 查看更新的问题和 sql fiddle
@SantoshPillai - 当然,完成。
【参考方案1】:
这是您要查找的查询
SELECT TOWN, ID1 FROM Table1 t WHERE ( SELECT COUNT(*) FROM Table1 WHERE TOWN = t.TOWN AND ID1 = t.ID1 ) > 1;
【讨论】:
您的查询在 sqlfiddle 上运行良好,但是当我在临时表的实际数据上运行它时,我收到错误 #1137 - 无法重新打开表:'t' 在 mysql 的时态表上执行的查询中,您似乎可以引用同一个表两次。 你的意思是不能引用同一张表两次? dev.mysql.com/doc/refman/5.0/en/temporary-table-problems.html 我想不出在不引用同一个表两次的情况下进行查询的方法。也许您应该改用常规表格... 我的临时表是两个表的连接。您知道如何在查询中进行左连接吗?【参考方案2】:SELECT a.TOWN, a.ID1 FROM Table1 a JOIN
(SELECT TOWN, ID1 FROM Table1 GROUP BY TOWN, ID1 HAVING COUNT(*) > 1) b
ON a.TOWN = b.TOWN
AND a.ID1 = b.ID1
【讨论】:
以上是关于使用mysql在临时表中显示每个组的重复项的主要内容,如果未能解决你的问题,请参考以下文章