我有这张桌子:
id | businessName| keywords
============================
1 Adam FOX
2 FOX bla bla bla
用户插入一个字符串,我想在businessName和keywords列中搜索此字符串。所以我运行此查询:
SELECT * FROM `business` WHERE `businessName` LIKE '%str%' OR `keywords` LIKE '%str%'
我的问题:
首先,我希望获得名称与str
匹配的商家,然后获取关键字与str
匹配的商家。
即:用户输入单词FOX
,mysql将返回两个商家(adam和FOX),在这种情况下我希望mysql首先返回FOX(因为它的名称与str
匹配然后返回Adam(因为它的关键字与str
匹配)
答案 0 :(得分:5)
您可以按照匹配生成的值进行排序:
SELECT
*
FROM `business`
WHERE
`businessName` LIKE '%str%' OR
`keywords` LIKE '%str%'
ORDER BY
CASE WHEN `businessName` LIKE '%str%' THEN
0
ELSE
1
END
上面的示例非常通用,但以下内容也适用于MySQL,只需按条件排序:
SELECT
*
FROM `business`
WHERE
`businessName` LIKE '%str%' OR
`keywords` LIKE '%str%'
ORDER BY
`businessName` LIKE '%str%' DESC
您需要在订单中添加DESC
,因为匹配(true)的排名将高于不匹配(false)。