我有一个名字和一个类别。输入名称时,我想猜测类别。
例如。
名称-类别
特易购杂货
特易购杂货
乐购-小游戏
我想要的是一个结果。然而,这并不像退回“杂货”那么简单。理想情况下,我只想退货,如果这个已经输入了至少50%的时间?否则,我只想退回食品杂货,如果它已被输入至少5次。
我有这个但不起作用。
SELECT DISTINCT(category) FROM records WHERE name='$name' AND count(category) > 5 ORDER BY count(category) DESC LIMIT 1;
发布于 2011-04-18 14:47:18
您应该使用group by
类别并使用having
子句只返回5行或更多行的类别。
一旦使用了distinct
,也不需要使用group by
。
像这样的东西应该对你有用:
SELECT category
FROM records
WHERE name='$name'
GROUP BY category
HAVING count(*) > 5
ORDER BY count(*)
DESC LIMIT 1
发布于 2011-04-18 14:50:13
除了Ike的回答外,如果您还想查询表中没有出现超过5次但出现次数超过50%的项,则请执行以下操作:
SELECT category
FROM records
WHERE name='$name'
GROUP BY category
HAVING count(*) >= 5 OR count(*) / (SELECT count(*) FROM records) >= 0.5
ORDER BY count(*)
DESC LIMIT 1
发布于 2011-04-18 14:50:45
select
distinct(category)
from records
where
name = '$name'
group by category
having (count(*) > 5)
order by count(*)
limit 1
https://stackoverflow.com/questions/5704522
复制相似问题