列出表中唯一值的计数

时间:2014-06-07 11:31:02

标签: mysql sql

我有一个MySQL表,其中包含允许用户记录他们看到的不同飞机的字段,包括类型,注册,日期,位置等。我想要做的是创建一个查询,该查询计算所有不同的唯一值。 'type'字段并将它们相加,以便用户可以看到他们看到过多少种不同的'类型'(飞机)。我使用了以下查询;

SELECT `type`,COUNT(*) as count 
FROM `spotted_list` 
GROUP BY type  
ORDER BY count DESC

完美适用于整个数据库,产生这样的结果;

type            count Descending
B.737-800   802
AIRBUS A320 781
Boeing 737-800  716
A'bus A320  463
A330-200    371

但是我想过滤购买“用户名”,所以我尝试了这个;

SELECT `type`,COUNT(*) as count 
FROM `spotted_list` 
GROUP BY type 
ORDER BY count DESC 
WHERE `username` LIKE 'admin'

所以希望这会显示上面的计数列表,但只针对名为'admin'的用户,但这就是我得到的;

错误
SQL查询:文档

SELECT  `type` , COUNT( * ) AS count
FROM  `spotted_list` 
GROUP BY TYPE 
ORDER BY count DESC 
WHERE  `username` LIKE  'admin'
LIMIT 0 , 30

MySQL说:文档

  

#1064 - 您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在'WHERE username LIKE'admin'附近使用正确的语法   在第1行限制0,30'

有谁知道有什么不对吗?

2 个答案:

答案 0 :(得分:1)

where应该出现在group by

之前
SELECT  `type` , COUNT( * ) AS count
FROM  `spotted_list` 
WHERE  `username` LIKE  'admin'
GROUP BY TYPE ORDER BY count DESC 
LIMIT 0 , 30

答案 1 :(得分:0)

关键字的顺序是固定的。它是

select
from
join
where
group by
having
order by 
limit