我有一个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'
有谁知道有什么不对吗?
答案 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