我正在尝试在用户输入时实现hashtag建议,所以我正在构建一个这样的#标签表:
CREATE TABLE IF NOT EXISTS `hashtags_weight` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`hashtag` varchar(140) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
`tot` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `hashtag` (`hashtag`,`tot`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
我稍后会查询:
SELECT hashtag FROM hashtags_weight WHERE hashtag LIKE 'foob%' ORDER BY tot DESC
我从以前插入的主题标签中得到主题标签的源代码。现在,虽然这些都是非常基本的东西,但我认为建议使用最常用案例的主题标签会更好。假设我有一张表:
10 Foobar
5 FooBar
2 foobar
这意味着已经使用了10次Foobar,5次FooBar和2次foobar。现在,我想把它标记为17,并在自动完成期间仅提议Foobar。
当然我可以通过一些数组排序来完成它,但我已经看到它需要花费很多时间(有很多行)。我想听听一些不同的方法。
P.S。 这项工作每晚都会进行,所以没有必要超级快。我只是想确保我正确地做到了。 当然我可以在Db上添加更多表格,没问题。
答案 0 :(得分:0)
更新您的查询:
SELECT count(*) as count,hashtag FROM hashtags_weight WHERE hashtag LIKE 'foob%' GROUP BY hashtag ORDER BY tot DESC
添加点数&由于您的表已经不区分大小写,因此它应该可以正常工作。
不确定你是如何进入10,5& 2已经买了我假设你用PHP做了这个
编辑:
我看到你使用'tot'。这是否占总数?在那种情况下:
SELECT hashtag,sum(tot) as total FROM hashtags_weight WHERE hashtag LIKE 'foob%' GROUP BY hashtag ORDER BY tot DESC