簡體   English   中英

mysql:搜索兩列:第一列,然后第二列

[英]mysql : search two columns : one column first then second column

我正在嘗試搜索表中的兩列,即標題和描述。 但我想先搜索標題,然后再搜索描述。 因此所有與標題匹配的行排在第一位,與描述匹配的所有行排在第二位

我可以使用單個SQL查詢實現此功能嗎?

我想這應該很有效

SELECT COLA 
(
SELECT TITLE AS COLA, 'T' AS IND
FROM TABLE
UNION ALL
SELECT DESCRIPTION AS COLA, 'D' AS IND
FROM TABLE
)
ORDER BY COLA, IND DESC

您可以執行UNION,然后首先在標題中搜索,然后為這些值提供一個包含0和1的列以進行描述。 然后,您對該列進行ORDER BY:

SELECT col1,col2,col3 
FROM
(SELECT col1,col2,col3 ,0 AS ord 
 FROM table1 
 WHERE title LIKE "%searchQuery%"
 UNION
 SELECT col1,col2,col3, 1
 FROM table1 
 WHERE description LIKE "%searchQuery%" 
) a
ORDER BY ord ASC;

這樣,與標題匹配的記錄將首先出現。

您還可以使用case語句,這樣就不必遍歷整個表兩次。

SELECT col1,col2,col3,
   Case 
   WHEN title LIKE '%searchQuery%' THEN 0
   WHEN description LIKE '%searchQuery%' THEN 1
   END
   AS ord
FROM table1 
WHERE ord is not null
ORDER BY ord;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM