SQL在连接后显示重复项

时间:2016-09-22 21:08:29

标签: mysql sql join duplicates

我试图选择表格的所有重复(删除不同记录)条目,加入的结果。

我试图用:

SELECT items.id, b.title FROM b WHERE b.title IN (
SELECT b.title FROM b LIMIT 20 GROUP BY b.title HAVING COUNT(*)>1
) INNER JOIN items USING (number) 

注意:number是'项目共有的索引。和' b'用于连接的表。

但显而易见的是,它不起作用。我试图了解如何获取重复项并返回连接结果。

输出的一个例子应该是:

 id | title
----|----
001 | House
002 | House
005 | Tree
010 | Tree
006 | Car
007 | Car

3 个答案:

答案 0 :(得分:2)

在子查询中使用COUNT(*)会产生开销。我建议:

SELECT i.id, b.title
FROM b JOIN
     items i
     USING (number)
WHERE EXISTS (SELECT 1
              FROM b b2
              WHERE b2.title = b.title AND b2.id <> b.id
             );

这假设假设b在每行上都有唯一的id,它在子查询中使用。此查询可以使用b(title, id)上的索引。

答案 1 :(得分:1)

你可以这样做:

SELECT id, title
FROM b INNER JOIN items USING number
WHERE title IN 
    (SELECT title
     FROM b
     GROUP BY title
     HAVING COUNT(*) > 1)

答案 2 :(得分:0)

我使用类似的查询完成了类似的几次。

SELECT id
       ,title
  FROM some_table AS T1
 WHERE (SELECT COUNT(1)
          FROM some_table AS T2
         WHERE T1.title = T2.title) > 1