php - mysql 之类的查询,如何对表中的两列进行排序,但按一列匹配的结果排序
问题描述
使用下面的代码,我能够返回与搜索词匹配的所有产品。但是,它们的排序方式是,名称与搜索词组不同的产品首先出现,而名称匹配的产品随后出现,因为描述匹配。
如何排序并返回名称首先与搜索词组匹配的产品?
$sqli = "
SELECT *
FROM product
WHERE";
Foreach($strarray as $key=>$value){
If($key > 0){
$sqli = $sqli . "OR";
}
$sqli = $sqli . " (Name LIKE '%" . $value . "%' or Description LIKE '%" . $value . "%')";
}
解决方案
添加一个ORDER BY
子句:
$ssql .= " ORDER BY Name LIKE '%" . $value . "%' DESC"
布尔表达式为 1 表示 TRUE,0 表示 FALSE,因此按条件排序按行是否与条件匹配。
顺便说一句,您应该学习使用准备好的语句来防止 SQL 注入。请参阅如何防止 PHP 中的 SQL 注入?
推荐阅读
- c++ - 为什么带有 WM_LBUTTONDBLCLK 的 PostMessage 不起作用?
- python - 在 Django 中链接更新和获取方法以更新字段
- jestjs - 如何嘲笑 api 调用以进行 saga 测试
- c# - CSOM C# 与 Project Server 连接
- javascript - 具有来自外部角度 7 的值的抽象控制
- algorithm - 如果我们将输入加倍 7*n^3
- javascript - 如何使用 jQuery 设置文件输入源
- javascript - 我该如何解决-“订阅”类型上不存在属性“then”
- docker - 如何在 Docker 容器(Python、Flask 和 Redis)中启动自定义 RQ 工作者
- python - 有没有没有 CORS 的示例 API?