我试图选择表格的所有重复(删除不同记录)条目,加入的结果。
我试图用:
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
答案 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