[英]ordering search results from mysql
我有一個包含項目的表,我表中的2個屬性是name
(項目名稱)和keywords
(與該項目有關的單詞)。 當我在數據庫中搜索項目時,我使用以下代碼。 我將搜索條目q=""
存儲在變量$query
。 我的mysql搜索如下..
$q = "SELECT * FROM items WHERE name LIKE '%$query%' OR keywords LIKE '%$query%' AND status = '1' LIMIT $start, $per_page";
此代碼獲取項目名稱與查詢類似的所有項目,或者包含與查詢類似的關鍵字。如何訂購結果,以便名稱與查詢類似的項目出現在項目之前包含一個像查詢一樣的關鍵字? 剛才它只是命令首先添加到數據庫中的項目。
你可以這樣試試
SELECT *
FROM items
WHERE (name LIKE '%$query%'
OR keywords LIKE '%$query%')
AND status = '1'
ORDER BY (name LIKE '%$query%') DESC, name, keywords
LIMIT $start, $per_page
注意:考慮使用預准備語句而不是插入查詢字符串。
您可以使用CASE語句為OrderValue
分配值,然后按OrderValue
:
SELECT *,
CASE WHEN name LIKE '%$query%'
THEN 1
ELSE 2 END AS OrderValue
FROM items
WHERE name LIKE '%$query%'
OR keywords LIKE '%$query%'
AND status = '1'
ORDER BY OrderValue
LIMIT $start, $per_page
嘗試這樣的事情:
$q =
"SELECT * FROM items WHERE name LIKE '%$query%' AND status = '1'
UNION
SELECT * FROM items WHERE keywords LIKE '%$query%' AND status = '1'
LIMIT $start, $per_page"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.