我想投射pid所有具有相同标题的产品的索引,因为我将以下内容用作子查询。sql GROUP HAVING选择
产品(PID,标题)
SELECT p.title
FROM product p
group by title
HAVING (COUNT(p.title) > 1)
这个输出重复的标题很好,但我怎么投射PID的呢?
我想投射pid所有具有相同标题的产品的索引,因为我将以下内容用作子查询。sql GROUP HAVING选择
产品(PID,标题)
SELECT p.title
FROM product p
group by title
HAVING (COUNT(p.title) > 1)
这个输出重复的标题很好,但我怎么投射PID的呢?
SELECT p.pid, p.title
FROM product p
INNER JOIN
(SELECT p.title
FROM product p
GROUP BY title
HAVING (COUNT(p.title) > 1)) t ON t.title = p.title
这是它与sqlfiddle工作的例子:
我认为自联接是在这种情况下,最简单的答案。请注意,我们是如何针对不同的PID,但相同的标题测试:
SELECT p1.pid FROM products p1 JOIN products p2
ON p1.pid <> p2.pid AND p1.title = p2.title;
(我测试了它在这里:http://sqlfiddle.com/#!2/c8b8d/18)
如果我在p1.pid之前加入'distinct',它会返回与@ Bassam-mehanni的答案相同的数字 – AlasdairC 2012-02-08 21:17:03
对不起,这将返回38000分的记录,只有51分贝重复的标题。 – AlasdairC 2012-02-08 20:53:26
@AlasdairC您的sup查询返回多少个标题?还有,你在我的查询中改变了什么? – 2012-02-08 20:55:13
以为我没有,但在第二次看,它完全确实返回正确数量的结果,每个标题出现不止一次,这正是我需要,谢谢。 – AlasdairC 2012-02-08 21:13:56