【问题标题】:MySQL sort on a calculationMySQL排序计算
【发布时间】:2011-01-23 02:24:50
【问题描述】:

是否可以对 mySQL 中的 2 行计算进行排序?例如,我有 2 行,lpap 我正在尝试做这样的事情:

SELECT * from myTbl WHERE 1 ORDER BY (lp/ap)

这不会引发错误,但也不会按计算结果排序。有没有办法做到这一点,还是我必须将 lp/ap 存储在数据库中?

【问题讨论】:

  • lpap 是行还是列?

标签: mysql sorting


【解决方案1】:

是的,这是可能的,而且确实有效。查看以下测试:

CREATE TABLE a(a INT, b INT);

INSERT INTO a VALUES (1, 1);
INSERT INTO a VALUES (1, 2);
INSERT INTO a VALUES (1, 3);
INSERT INTO a VALUES (1, 4);
INSERT INTO a VALUES (1, 5);
INSERT INTO a VALUES (1, 6);
INSERT INTO a VALUES (2, 1);
INSERT INTO a VALUES (2, 2);
INSERT INTO a VALUES (2, 3);
INSERT INTO a VALUES (2, 4);
INSERT INTO a VALUES (2, 5);
INSERT INTO a VALUES (2, 6);

SELECT a.a, a.b, (a/b) FROM a ORDER BY (a/b);

+------+------+--------+
| a    | b    | (a/b)  |
+------+------+--------+
|    1 |    6 | 0.1667 | 
|    1 |    5 | 0.2000 | 
|    1 |    4 | 0.2500 | 
|    2 |    6 | 0.3333 | 
|    1 |    3 | 0.3333 | 
|    2 |    5 | 0.4000 | 
|    1 |    2 | 0.5000 | 
|    2 |    4 | 0.5000 | 
|    2 |    3 | 0.6667 | 
|    2 |    2 | 1.0000 | 
|    1 |    1 | 1.0000 | 
|    2 |    1 | 2.0000 | 
+------+------+--------+

SELECT a.a, a.b FROM a ORDER BY (a/b); 将返回相同的结果。

【讨论】:

  • 谢谢,原来问题不在我的陈述中,而是完全在其他地方,现在我觉得自己像个白痴。不过,很高兴知道我的猜测是正确的。
【解决方案2】:
 SELECT *, (lp/ap) AS calculation from myTbl ORDER BY calculation

只要 (lp/ap) 有效,这应该可以解决问题。

【讨论】:

    【解决方案3】:

    你可能会有更多的机会去做

    SELECT *, (lp/ap) as n from myTbl ORDER BY n
    

    【讨论】:

      猜你喜欢
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      • 2018-10-18
      • 2012-02-07
      • 1970-01-01
      相关资源
      最近更新 更多