mysql中有没有求两列差的函数?直接相减么?还有若是将求差后的数进行排序 是不是就不会用到索引了??
mysql> select * from test;
+------+-----+------+
| id   | idd | name |
+------+-----+------+
|    1 | 200 |      | 
|    2 |  30 |      | 
|    3 |  40 |      | 
|    4 |  50 |      | 
|    18|   2 |      | 
|    20 |   8 |      | 
+------+-----+------+
6 rows in set (0.01 sec)
要求是:求idd-id的值并按idd-id倒序排序,取最大值。

解决方案 »

  1.   

    select *,idd-id from tt
    order by idd-id desc limit 1
    or
    select max(idd-id) from tt
      

  2.   

    mysql> select * from tb;
    +------+------+------+
    | id   | idd  | name |
    +------+------+------+
    |    1 |  200 |      |
    |    2 |   30 |      |
    |    3 |   40 |      |
    |    4 |   50 |      |
    |   18 |    2 |      |
    |   20 |    8 |      |
    +------+------+------+
    6 rows in set (0.00 sec)mysql> select * from tb order by idd-id desc limit 1;
    +------+------+------+
    | id   | idd  | name |
    +------+------+------+
    |    1 |  200 |      |
    +------+------+------+
    1 row in set (0.00 sec)
      

  3.   

    select max(idd-id) from tt
      

  4.   

    mysql> select * from test;
    +------+------+------+
    | id   | idd  | name |
    +------+------+------+
    |    1 |  200 | NULL |
    |    2 |   30 | NULL |
    |    3 |   40 | NULL |
    |    4 |   50 | NULL |
    |   18 |    2 | NULL |
    |   20 |    8 | NULL |
    +------+------+------+
    6 rows in set (0.00 sec)mysql> select idd-id,id,idd,name from test order by 1 desc ;
    +--------+------+------+------+
    | idd-id | id   | idd  | name |
    +--------+------+------+------+
    |    199 |    1 |  200 | NULL |
    |     46 |    4 |   50 | NULL |
    |     37 |    3 |   40 | NULL |
    |     28 |    2 |   30 | NULL |
    |    -12 |   20 |    8 | NULL |
    |    -16 |   18 |    2 | NULL |
    +--------+------+------+------+
    6 rows in set (0.00 sec)mysql> select idd-id,id,idd,name from test order by 1 desc limit 1;
    +--------+------+------+------+
    | idd-id | id   | idd  | name |
    +--------+------+------+------+
    |    199 |    1 |  200 | NULL |
    +--------+------+------+------+
    1 row in set (0.01 sec)mysql>
      

  5.   

    mysql> select idd-id,id,idd,name from test order by 1 desc ;
    +----------------------+------+-----+------+
    | idd-id               | id   | idd | name |
    +----------------------+------+-----+------+
    | 18446744073709551614 |   10 |   8 |      | 
    |                  199 |    1 | 200 |      | 
    |                   46 |    4 |  50 |      | 
    |                   37 |    3 |  40 |      | 
    |                   28 |    2 |  30 |      | 
    |                    1 |    1 |   2 |      | 
    +----------------------+------+-----+------+
    为什么不是负数???