是否可以在mySQL中对2行进行排序?例如,我有2个排,lp和ap我想要做这样的事情:
SELECT * from myTbl WHERE 1 ORDER BY (lp/ap)
Run Code Online (Sandbox Code Playgroud)
哪个不是抛出错误,但它也没有按计算结果排序.有没有办法做到这一点,还是我必须在数据库中存储lp/ap?
Dan*_*llo 20
是的,它是可能的,它确实有效.看看以下测试:
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 |
+------+------+--------+
Run Code Online (Sandbox Code Playgroud)
SELECT a.a, a.b FROM a ORDER BY (a/b); 会返回相同的结果.
SELECT *, (lp/ap) AS calculation from myTbl ORDER BY calculation
Run Code Online (Sandbox Code Playgroud)
如果(lp/ap)有效,这应该可以解决问题.