繁体   English   中英

表中的SQL计数值,仅返回5个最高值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM