如何使用自定义MySQL函数有条件地对第二列进行排序?

时间:2011-11-01 10:24:49

标签: mysql sql sorting

我有一个结果集,我必须以相当复杂的方式排序。在排序中使用了两个字段(A和B),算法如下:

  1. 按字段A排序
  2. 然后,如果字段A包含子字符串K,则使用自定义函数F按字段B排序(参见下文)。如果字段A不包含K,则B的内置排序就可以了。
  3. 更多信息:

    • 字段A是VARCHAR。
    • 字段B是一个INTEGER,可以具有以下值:{1,2,3,4,5}。
    • 功能F很简单,就是“以这种方式排序值:{4,5,1,2,3}”。

    如何通过SQL查询在MySQL中执行此操作?我被迫做了这个方面吗?

1 个答案:

答案 0 :(得分:3)

…
ORDER BY
  A,
  CASE WHEN A LIKE CONCAT('%', K, '%') THEN Func(B) ELSE B END