问题描述
在学习MySQL的时候, 使用 ORDER BY
关键字对指定的列进行排序的时候可以使用列的别名,比如
SELECT
id,
productName,
dir_id,
costPrice cp
FROM
product
WHERE
productName LIKE '%M%'
ORDER BY
cp ASC;
OUTPUT:
+----+-------------+--------+------+
| id | productName | dir_id | cp |
+----+-------------+--------+------+
| 8 | 罗技M215 | 2 | 30 |
| 2 | 罗技M100 | 3 | 33 |
| 1 | 罗技M90 | 3 | 35 |
| 3 | 罗技M115 | 3 | 38 |
| 4 | 罗技M125 | 3 | 39 |
| 9 | 罗技M305 | 2 | 48 |
| 10 | 罗技M310 | 2 | 69.8 |
| 11 | 罗技M505 | 2 | 72 |
| 12 | 罗技M555 | 2 | 140 |
| 13 | 罗技M905 | 2 | 270 |
| 14 | 罗技MX1100 | 2 | 300 |
| 15 | 罗技M950 | 2 | 320 |
| 16 | 罗技MX Air | 2 | 400 |
+----+-------------+--------+------+
13 rows in set
但是如果在定义别名的时候使用了中文
SELECT
id,
productName,
dir_id,
costPrice '成本'
FROM
product
WHERE
productName LIKE '%M%'
ORDER BY
'成本';
输出就会出现问题
+----+-------------+--------+------+
| id | productName | dir_id | 成本 |
+----+-------------+--------+------+
| 1 | 罗技M90 | 3 | 35 |
| 2 | 罗技M100 | 3 | 33 |
| 3 | 罗技M115 | 3 | 38 |
| 4 | 罗技M125 | 3 | 39 |
| 8 | 罗技M215 | 2 | 30 |
| 9 | 罗技M305 | 2 | 48 |
| 10 | 罗技M310 | 2 | 69.8 |
| 11 | 罗技M505 | 2 | 72 |
| 12 | 罗技M555 | 2 | 140 |
| 13 | 罗技M905 | 2 | 270 |
| 14 | 罗技MX1100 | 2 | 300 |
| 15 | 罗技M950 | 2 | 320 |
| 16 | 罗技MX Air | 2 | 400 |
+----+-------------+--------+------+
13 rows in set
可以发现并没有真正的排序,但是多次执行,结果也是相同的.
问题解决
这问题我解决不了了,谁解决了就告诉我吧, 记住结论,不要用中文就好