MySQL 使用 order by field 自定义排序

  • MySQL 查询时,如果不带 order by,会根据主键来排序,从小到大返回查询结果;
  • order by 时,可指定按字段升序 ASC 或降序 DESC:
SELECT * FROM project_case where
case_id in (119, 113, 117)
order by case_id asc;

SELECT * FROM luckyframe.project_case where
case_id in (119, 113, 117)
order by case_id desc;
  • 若想结果按照指定的字段和指定的顺序进行排序时,需要用到 order by field 关键字:
SELECT * FROM project_case where
case_id in (119, 113, 117)
order by field(case_id, 119, 113, 117);

返回结果按照指定的字段和指定的顺序进行排序:


指定顺序排序
MyBatis 使用 order by field 语法
<select id="selectSortedProjectCaseByIds" parameterType="String" resultMap="ProjectCaseResult">
        SELECT * FROM project_case where
        case_id in
        <foreach collection="caseIdList" item="caseId" open="(" close=")" separator=",">
            #{caseId}
        </foreach>
        order by field
        <foreach collection="caseIdList" item="caseId" open="(case_id," close=")" separator=",">
            #{caseId}
        </foreach>
    </select>

Mapper.java 中调用的代码如下:

List<ProjectCase> selectSortedProjectCaseByIds(@Param("caseIdList") List<Integer> caseIdList);

传递的 caseIdList 是已经排好序的列表。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容