2012-05-24 46 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 
相關問題