按字段排序mysql命令不';不起作用,给错了顺序
我有一个奇怪的问题。我在mysql中尝试了以下命令:按字段排序mysql命令不';不起作用,给错了顺序,sql,mysql,Sql,Mysql,我有一个奇怪的问题。我在mysql中尝试了以下命令: SELECT `type`, `bought` FROM cars WHERE owner = 'test' ORDER BY type 它在phpmyadmin中打印出来: type bought -------------------- 17 1281025497 22 1287708417 22 1287347244 24 1287708324
SELECT `type`,
`bought`
FROM cars
WHERE owner = 'test'
ORDER BY type
它在phpmyadmin中打印出来:
type bought
--------------------
17 1281025497
22 1287708417
22 1287347244
24 1287708324
24 1287876461
6 1287896659
9 1287847238
这没有任何意义。17大于22,9小于6 类型列的类型显然是varchar或text(实际上是任何字符串类型)。必须使用整数类型。字符串“10”小于字符串“6”(1在6之前)是完全正常的
如果确实不想更改列的类型,可以将其强制转换为整数。如果
类型
是字符
字段,则这是正确的
如果它们是字符,你不是在比较数字6和24,而是在比较字符串“6”和“24”
“6”大于“2”,因此它位于后面。您不需要将所有列都放在反勾号中。“bunded”很可能不是保留关键字,而且您没有在backticks中添加“cars”和“owner”,因此最好不要使用任何backticks,除非您实际上必须使用保留字作为列名(“type”可能是保留的;请查看MySQL文档)
SELECT `type`, `bought` FROM cars WHERE owner='test' ORDER BY CAST(`type` AS SIGNED)