2012-05-24 47 views
3

我有这样的一个表:如何选择一个记录是存在不止一次表

book_no  lang  price  shelf  
---------- -------- --------- ----- 
1   eng  20   a 
4   french 34   a 
2   eng  26   b 
7   russian 71   b 
12   german 33   a 
43   french 15   d 
11   eng  43   c 
14   rusian 33   a 
19   eng  20   d 
24   french 40   c 
23   eng  57   a 
27   russian 48   b 
42   german 31   c 
25   french 15   d 

从这个表我想获取book_no,语言,架子。
目前出现3次以上的语言,只有这些书才能显示。
我想:

select book_no,lang,shelf from a where (count(lang)>3)  

感谢您的帮助提前

+1

SQL?看起来像HTML给我? :S – mattytommo

+0

对不起,我没有得到。它为什么看起来像HTML? – Dexters

回答

1

组功能,如数量,金额不能在where子句中使用。

如果你的DBMS支持聚集窗口函数由

group by book_no -- or the fields you need, depending on sgbd, you can put one or have to put all 

使用组和having子句

Having count(lang) > 3 
4
SELECT book_no, 
     lang, 
     shelf 
FROM a 
WHERE lang IN (SELECT lang 
       FROM A 
       GROUP BY lang 
       HAVING Count(*) > 3) 
0

,你可以试试这个:

SELECT 
    book_no, 
    lang, 
    shelf 
FROM (
    SELECT 
    *, 
    COUNT(*) OVER (PARTITION BY lang) AS book_count 
    FROM a 
) s 
WHERE book_count >= 3 
相关问题