mysql:搜索两列:第一列然后是第二列

时间:2013-11-26 19:00:56

标签: mysql sql database

我正在尝试在表格中搜索两列,即标题和说明。但我想首先搜索标题然后再描述。所以匹配title的所有行都是第一个,所有匹配description的行都是第二个

我可以使用单个SQL查询来实现吗?

3 个答案:

答案 0 :(得分:1)

我认为这应该是有效的

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

答案 1 :(得分:0)

您可以执行UNION并首先搜索标题,并为这些值提供0和1的列以进行说明。然后你按该列排序:

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;

这样,标题中匹配的记录将首先出现。

答案 2 :(得分:0)

您也可以使用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;