按字段排序合并

时间:2014-11-04 00:19:01

标签: mysql sql sql-server

我有这套规则来对MySQL和MySQL中的结果进行排序。 SQL服务器:

  1. 首先按qty排序 - 从最高到最低
  2. 上面的排序结果再次由storage排序,并且首先放2,而不是 值> 2,而不是< 2
  3. 以上排序后的结果再次排序price - 从最低到 最高
  4. 我写了以下条款:

    1. ORDER BY table.qty DESC
    2. ORDER BY FIELD (table.storage, =2, >2, <2)
    3. ORDER BY table.price ASC
    4. 从数据中结合对我来说意味着:

      qty,storage,price
      0,0,0
      1,1,10
      1,2,22
      1,3,10
      2,3,10
      1,2,9
      

      我会得到:

      qty,storage,price
      2,3,10
      1,2,9
      1,2,22
      1,1,10
      1,3,10
      0,0,0
      

      我需要帮助两件事:

      1 - 第二个子句返回错误,我想它是因为错误地使用了运算符:

        

      SQLSTATE [42000]:语法错误或访问冲突:1064您有   SQL语法错误;查看与您的手册相对应的手册   MySQL服务器版本,用于在&#39;&gt; 2,&lt; 2)

      附近使用正确的语法

      2 - 如何将这些子句链接在一起

      我不知道如何真正做到这一点,但让我们按照伪查询说明它:

      SELECT
          *
      FROM
          table
      ORDER BY
          table.qty DESC
      AND
          ORDER BY FIELD (
              table.storage, =2, >2, <2
          )
      AND
          ORDER BY
              table.price ASC
      

1 个答案:

答案 0 :(得分:2)

对于MSSQLServer,您可以使用

SELECT
    *
FROM
    table
ORDER BY
    table.qty DESC,
    CASE
        WHEN table.storage = 2 THEN 1
        WHEN table.storage > 2 THEN 2
        WHEN table.storage < 2 THEN 3
    END ASC,
    table.price ASC

CASE (Transact-SQL)