如何按列优先级排序mysql结果?
实施例。我有一个产品表,该表包含两列,产品名称(p.name)和产品说明(p.desc)。
用户应该能够输入关键字以在数据库中查找产品。
"p.name LIKE '%keyword%' OR p.desc LIKE '%keyword%'
我希望首先返回匹配p.name的结果,然后返回p.desc秒。
我将如何实现这一目标?
答案 0 :(得分:11)
我会尝试像
这样的东西ORDER BY (NOT (p.name LIKE '%keyword%'))
如果满足您的第一个条件,order by
子句将评估为false
。因此,这些记录将被推进。
修改强>
等号(=
)可能错误地进入了问题。
答案 1 :(得分:1)
您应该像MATCH() ... AGAINST
及更多here一样尝试MySQL全文搜索。然后按搜索排名和列排序。