如何在sqlite中使用count函数?

时间:2014-06-08 08:32:04

标签: sql sqlite

C:\Users\pengsir>sqlite3  e:\\test.db  
sqlite> create table test (f1 TEXT,f2 TEXT, f3 TEXT);  
sqlite> insert into test values("x1","y1","w1");  
sqlite> insert into test values("x1","y1","w2");  
sqlite> insert into test values("x1","y3","w2");  
sqlite> insert into test values("x2","y3","w2");  
sqlite> insert into test values("x3","y4","w4");   
sqlite> insert into test values("x2","y3","w4");  
sqlite> insert into test values("x1","y3","w2");  

 select f1,f2 from test where count(f2)>1 group by f1,f2;

我收到错误消息:Error: misuse of aggregate:,我想获得f1和f2组合,其中f1的值相同,两个或多个相同的f2值被选中,也就是说,我想要选择

x1|y1
x1|y3
x2|y3

我可以通过两个sqlite命令来做到这一点:

sqlite> create table tmp1 as
   ...> select f1,f2,count(f2) as v from test group by f1,f2;
sqlite> select f1,f2 from tmp1 where v>1 ;

如何简化我的sqlite命令?

1 个答案:

答案 0 :(得分:2)

WHERE子句在GROUP BY聚合之前过滤行,因此count(f2)值尚不可用。

要在聚合后过滤行,请使用HAVING子句:

SELECT f1, f2
FROM test
GROUP BY f1, f2
HAVING count(f2) > 1