[英]SQL count values in table and only return 5 highest
因此,我正在网站上的一个简单搜索页面上工作,并且试图仅选择最相关的信息。
为了做到这一点,我想从2个不同的表中选择数据。 但我只想选择与搜索查询匹配的数据。
现在,这是有趣的部分。 我只想选择$ variable出现次数最多的数据,然后按从高到低的顺序对数据进行排序,然后限制结果的数量(大约为1,000或2,000)
以较小的单词/代码形式询问。 我想在SQL(由PHP运行)中做类似的事情
$query = ["search","me","please"];
$maxData = 1500;
foreach($query as $value){
//SQL start(Part I need help on)
$res1 = SELECT * from table1 WHERE column LIKE %$value% AND return columns with highest times $value appears LIMIT $maxData
$res2 = SELECT * from table2 WHERE column1,column2,column3 LIKE %$value% AND return columns with highest times $value appears LIMIT $maxData
}
我希望计算搜索到的变量在列中出现的次数,然后按从最高计数到最低计数的顺序返回时间
仅在SQL中就可以实现所有这些功能吗?
另外,如果我的问题不清楚或难以理解,请这样说。
您可以使用mysql fulltext
搜索。 在这种情况下,您将获得每个结果的分数。
在这里查看更多详细信息
可以使用sql通过使用group by语句和辅助表来完成。
使用一列search_term作为varchar创建表tbl_search。
每次执行查询时,该表将被截断并重新填充搜索词。
Select * from
(Select search_term, count(*) as hits
from table1 , tbl_search
where table1.column like '%' + tbl_search.search_term +'%'
Group by tbl_search.search_term) as z1
Order by hits
索引tbl_search.search_term以帮助查询性能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.