0

作成中のクエリ/ビューに問題があります。

テーブル構造:

  • templateId (整数、プライマリ)
  • attributeName (Varchar、プライマリ)
  • x1 (中)
  • x2 (中)
  • 配置 (Enum[左、右])
  • 位置 (Enum[上、下])
  • オフセット (整数)

次の順序で結果を表示するビューを作成したいと考えています。

  • templateId ASC による最初の順序付け。
  • 2 番目の順序は、Position=Top の場合は Offset ASC、Position=Bottom の場合は Offset DESC です。

特に 2 番目の順序付けを念頭に置いて、どのように作成すればよいでしょうか。

よろしく。

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 に答える