sql GROUP HAVING选择

时间:2012-02-08 20:35:25

标签: sql group-by having

我想为所有具有相同标题的产品投射 pid 索引,因为我使用以下作为子查询。

产品( pid ,标题)

SELECT p.title
FROM product p
group by title
HAVING ( COUNT(p.title) > 1 )

这会输出重复的标题,但我如何投影 pid 呢?

2 个答案:

答案 0 :(得分:5)

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的例子:

http://sqlfiddle.com/#!3/25e77/1

答案 1 :(得分:1)

我认为在这种情况下,自我加入是最简单的答案。请注意我们如何测试不同的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