在 MySQL 中,可以使用 IN 查询来选择特定的行,并通过 FIELD 函数或 ORDER BY 子句来按照指定的字段进行排序。下面分别展示如何使用原生 SQL 和 ThinkPHP 5 框架实现这一点。
1. 使用原生 MySQL 查询
假设你有一个表 users,其中包含字段 id 和 name,并且你想根据特定的 id 列表排序,例如:(3, 1, 2)。
SQL 查询示例:
SELECT * FROM usersWHERE id IN (3, 1, 2)ORDER BY FIELD(id, 3, 1, 2);
FIELD(id, 3, 1, 2)用于根据指定的顺序进行排序,结果会首先显示id=3的记录,其次是id=1和id=2。
2. 使用 ThinkPHP 5
在 ThinkPHP 5 中,使用 Db 类来执行 SQL 查询,可以通过 orderRaw 方法实现 FIELD 函数的排序。
ThinkPHP 5 查询示例:
use think\Db;$ids = [3, 1, 2]; // 需要的 ID 列表// 将 ID 列表转换为以逗号分隔的字符串$idString = implode(',', $ids);$users = Db::table('users')
->whereIn('id', $ids) // 使用 whereIn 进行筛选
->orderRaw("FIELD(id, $idString)") // 使用 orderRaw 进行排序
->select();return $users;
发表评论 取消回复