簡體   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