Mysql 为什么sql查询不能正常工作

Mysql 为什么sql查询不能正常工作,mysql,Mysql,我在mysql查询中面临很多问题。 我正在为order编写一个查询,它向我显示结果,但顺序不正确。我的桌子是空的 +----+--------+--------+ | ID | NAME | SALARY | +----+--------+--------+ | 1 | hari | 2000 | | 2 | haria | 2000 | | 3 | ramesh | 2000 | | 4 | rajesh | 5000 | | 5 | john | 21

我在mysql查询中面临很多问题。 我正在为order编写一个查询,它向我显示结果,但顺序不正确。我的桌子是空的

+----+--------+--------+
| 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的订单不起作用。
提前感谢。

最可能的原因是
SALARY
字段的类型为
varchar
,而不是
int
。 如果薪资类型为
varchar
,则显示排序。
如果您将工资设置为
int
,您将获得所需的排序。

这是因为您有
文本
(或
varchar
)输入字段类型。您可以看到顺序是由第一个字符决定的,并且是有效的

salary
字段类型设置为int,并根据需要工作:

ALTER TABLE salary MODIFY salary INT NOT NULL;

薪资字段类型是?文本,整数?谢谢。它正在工作。非常感谢你。你节省了我的时间。@user7635555很高兴我帮了忙