为什么sql查询无法正常工作

时间:2017-02-28 13:12:10

标签: mysql

我在mysql查询中遇到很多问题。 我正在编写一个查询订单,它显示的是结果,但没有按正确的顺序。我的桌子是

+----+--------+--------+
| ID | NAME   | SALARY |
+----+--------+--------+
|  1 | hari   | 2000   |
|  2 | haria  | 2000   |
|  3 | ramesh | 2000   |
|  4 | rajesh | 5000   |
|  5 | john   | 21000  |
|  6 | naag   | 45000  |
|  7 | sheena | 22000  |
|  8 | anu    | 34000  |
|  9 | aman   | 15000  |
| 10 | salil  | 9000   |
+----+--------+--------+

我想按关键字

按顺序获取所有薪水
mysql> select salary from salary order by salary desc;
+--------+
| salary |
+--------+
| 9000   |
| 5000   |
| 45000  |
| 34000  |
| 22000  |
| 21000  |
| 2000   |
| 2000   |
| 2000   |
| 15000  |
+--------+

mysql> select salary from salary order by salary;
+--------+
| salary |
+--------+
| 15000  |
| 2000   |
| 2000   |
| 2000   |
| 21000  |
| 22000  |
| 34000  |
| 45000  |
| 5000   |
| 9000   |
+--------+

这些结果没有正确显示。为什么asc和desc的命令不起作用。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

最可能的原因是SALARY字段的类型为varchar,而不是int。 显示的顺序是薪水是否为varchar类型。 如果你的工资为int,你就会得到所需的订单。

答案 1 :(得分:0)

那是因为您有text(或varchar)输入字段类型。您可以通过第一个字符查看订单并且该订单有效。

salary字段类型设置为int,并按您的意愿工作:

ALTER TABLE salary MODIFY salary INT NOT NULL;