我在 php 中遇到 sql 查询问题:
select
user, name, outlet, switch, port, vlan, mac, status
from access where
user like '%'
and name like '%'
and outlet like '%'
and switch like '%'
and port like '%'
and vlan like '%'
and mac like '%'
and status like '%'
order by 'user';
当在 MySQL 客户端版本:5.1.36 上运行查询时,查询完全不起作用(ORDER BY 将不起作用),但是在 MySQL 客户端版本:4.1.13 上运行 SAME 查询时,ORDER BY 起作用!
几乎所有关于ORDER BY、WHERE、LIKE命令的手册我都查过了,但是没有结果。没有提及版本差异等。
最佳答案
您必须删除 ORDER BY
子句中 user
的引号。这就是导致 ORDER BY
无法按预期工作的原因,因为您可以在 ORDER BY
子句和 'user'
引号中的内容被视为表达式(常量)而不是列名。
测试用例(MySQL 5.1.45):
CREATE TABLE tb (id int);
INSERT INTO tb VALUES (5);
INSERT INTO tb VALUES (1);
INSERT INTO tb VALUES (4);
INSERT INTO tb VALUES (2);
INSERT INTO tb VALUES (3);
SELECT * FROM tb ORDER BY 'id';
+------+
| id |
+------+
| 5 |
| 1 |
| 4 |
| 2 |
| 3 |
+------+
5 rows in set (0.00 sec)
SELECT * FROM tb ORDER BY id;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
+------+
5 rows in set (0.00 sec)
关于mysql - ORDER BY 在 MySQL 5.1 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3360169/