在 MySQL 中,可以使用 IN 查询来选择特定的行,并通过 FIELD 函数或 ORDER BY 子句来按照指定的字段进行排序。下面分别展示如何使用原生 SQL 和 ThinkPHP 5 框架实现这一点。

1. 使用原生 MySQL 查询

假设你有一个表 users,其中包含字段 idname,并且你想根据特定的 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;


点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部
{__SCRIPT__}