【问题标题】:How to sort MySQL ResultSet by Custom Field?如何按自定义字段对 MySQL ResultSet 进行排序?
【发布时间】:2014-12-02 10:46:47
【问题描述】:

以下是架构和数据:

Create table tblTestSorting (col int);
INSERT INTO tblTestSorting VALUES(2), (5), (3), (6), (4), (7), (1)

我有一个这样的查询:

SELECT col, 5-col AS 'extra' FROM tblTestSorting ORDER BY 'extra';

我想得到按“额外”列排序的结果,但是 这个查询没有给我按“额外”列排序的结果..

如何实现这个..??

【问题讨论】:

    标签: mysql sql select sql-order-by


    【解决方案1】:

    试试这个:

    SELECT col, (5 - col) AS extra
    FROM tblTestSorting 
    ORDER BY extra;
    

    查看SQL FIDDLE DEMO

    输出

    | COL | EXTRA |
    |-----|-------|
    |   7 |    -2 |
    |   6 |    -1 |
    |   5 |     0 |
    |   4 |     1 |
    |   3 |     2 |
    |   2 |     3 |
    |   1 |     4 |
    

    【讨论】:

      【解决方案2】:

      按类型(asc 或 desc)给出顺序.. 试试这个..

      SELECT col, 5-col AS extra FROM tblTestSorting ORDER BY col ASC
      

      【讨论】:

        【解决方案3】:

        两种方式

        SELECT col, 5-col AS 'extra' FROM tblTestSorting ORDER BY 5-col;
        
        
        SELECT col, 5-col AS 'extra' FROM tblTestSorting ORDER BY 2;
        

        【讨论】:

          【解决方案4】:

          试试这个:

           SELECT col, 5-col AS 'extra' FROM tblTestSorting ORDER BY 'extra' ASC
          

           SELECT * FROM (SELECT col, 5-col AS 'extra' FROM tblTestSorting) as t ORDER BY t.'extra' ASC
          

          【讨论】:

            【解决方案5】:

            解决方案 1

            select * from (SELECT col, 5-col AS 'extra' FROM tblTemp) order by extra

            或解决方案 2

            SELECT col, 5-col AS `extra` FROM tblTemp order by `extra`

            【讨论】:

              猜你喜欢
              • 2017-03-17
              • 1970-01-01
              • 1970-01-01
              • 2014-07-21
              • 2013-05-05
              • 1970-01-01
              • 1970-01-01
              • 2016-12-30
              • 1970-01-01
              相关资源
              最近更新 更多