0

我正在构建的查询/视图有问题。

表结构:

  • 模板 ID(整数,主要)
  • 属性名称(Varchar,主要)
  • x1(智力)
  • x2(智力)
  • 对齐方式(枚举[左,右])
  • 位置(枚举[顶部,底部])
  • 偏移量(整数)

我想创建一个按以下顺序显示结果的视图:

  • 第一次排序,按 templateId ASC。
  • 二次排序,如果 Position=Top,则按 Offset ASC,否则如果 Position=Bottom,则按 Offset DESC。

我该如何创建它,尤其是考虑到第二次排序。

问候。

4

2 回答 2

3
ORDER BY templateid ASC, IF(Position = 'top', offset, -offset) ASC
于 2013-07-30T12:06:41.157 回答
2
ORDER BY templateId ASC,
    CASE Position WHEN 'Top' THEN 1 WHEN 'Bottom' THEN 2 END ASC,
    CASE Position WHEN 'Top' THEN Offset ELSE NULL END ASC,
    CASE Position WHEN 'Bottom' THEN Offset ELSE NULL END DESC

请注意,您还应该能够使用以下内容,因为“Top”的索引小于“Bottom”:

ORDER BY templateId ASC,
    Position ASC,
    CASE Position WHEN 'Top' THEN Offset ELSE NULL END ASC,
    CASE Position WHEN 'Bottom' THEN Offset ELSE NULL END DESC
于 2013-07-30T12:07:19.140 回答