我试图在表中搜索两列,即标题和描述。但我想先搜索标题然后再描述。所以匹配标题的所有行都会排在第一位,并且匹配描述的所有行都会排在第二位mysql:搜索两列:一列第一列然后第二列
我可以使用单个SQL查询来实现吗?
我试图在表中搜索两列,即标题和描述。但我想先搜索标题然后再描述。所以匹配标题的所有行都会排在第一位,并且匹配描述的所有行都会排在第二位mysql:搜索两列:一列第一列然后第二列
我可以使用单个SQL查询来实现吗?
您可以先做一个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;
这样,与标题匹配的记录将首先出现。
您也可以使用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;
我想这应该是有效的
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