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