在 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;
发表评论 取消回复