【问题标题】:MySQL Proc OrderBy Case Not Allowing More Than One ColumnMySQL Proc OrderBy Case 不允许超过一列
【发布时间】:2021-04-12 12:45:01
【问题描述】:

我有一个 proc 需要根据参数按不同字段对查询进行排序。为了实现这一点,我为ORDER BY 命令创建了一个简单的case 语句,在我添加第二个排序字段之前效果很好。我确定这只是一个语法问题,但我似乎找不到关于这个问题的任何内容。

  ORDER BY 
    CASE _sort 
      WHEN 'random' THEN RAND() 
      WHEN 'latest' THEN u.updated, ut.sort
      WHEN 'alpha' THEN u.pageTitle, ut.sort 
      ELSE ut.sort 
    END
   ASC
  LIMIT _limit;

, ut.sort 添加到每个WHEN 是引发错误的原因。删除后,proc 工作正常。

【问题讨论】:

    标签: mysql sql-order-by case


    【解决方案1】:
    ORDER BY 
        CASE _sort WHEN 'random' THEN RAND() 
                   WHEN 'latest' THEN u.updated
                   WHEN 'alpha' THEN u.pageTitle
                   ELSE 1
                   END, ut.sort 
    

    【讨论】:

    • 很抱歉造成混淆,但不幸的是我只是添加了 ut.sort 作为示例。第二个(有时是第三个)字段并不总是排序字段。每个 WHEN 语句都不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    相关资源
    最近更新 更多