Mysql SQL查询未正确执行描述
我有一个我不知道如何解决的问题。 我有一个疑问:Mysql SQL查询未正确执行描述,mysql,sql,database,Mysql,Sql,Database,我有一个我不知道如何解决的问题。 我有一个疑问: $sql=“从传输中心选择*,其中状态为pris DESC“发出”订单” 我的数据库中有四个值,如pris: 0,4,8,26 因此,如查询所述,它们应按如下方式列出: 二十六 八, 四, 0 但不知怎的,它认为26的值是2.6(我想是吧?),因此26在4和0之间 有人能帮我解决这个问题吗?看起来您的列是一个VARCHAR类型,并且它的顺序与此类似。当您对一个VARCHAR进行排序时,每个字符从左到右,因此26在0到4之间 如果无法更改架构,
$sql=“从传输中心选择*,其中状态为pris DESC“发出”订单”代码>
我的数据库中有四个值,如pris
:
0,4,8,26
因此,如查询所述,它们应按如下方式列出:
- 二十六
- 八,
- 四,
- 0
但不知怎的,它认为26的值是2.6(我想是吧?),因此26在4和0之间
有人能帮我解决这个问题吗?看起来您的列是一个VARCHAR类型,并且它的顺序与此类似。当您对一个VARCHAR进行排序时,每个字符从左到右,因此26在0到4之间
如果无法更改架构,可以尝试以下操作:
SELECT * FROM transfer_centre WHERE status = 'out'
ORDER BY CAST(pris as SIGNED INTEGER) DESC
从状态为'out'的传输中心选择*
按强制转换顺序(PRI作为有符号整数)描述
注意:这与理想的解决方案相差甚远!如果列被视为一个数字,则应使用正确的类型更改架构。您的列看起来是一个VARCHAR类型,并且排序也与之类似。当您对一个VARCHAR进行排序时,每个字符从左到右,因此26在0到4之间
如果无法更改架构,可以尝试以下操作:
SELECT * FROM transfer_centre WHERE status = 'out'
ORDER BY CAST(pris as SIGNED INTEGER) DESC
从状态为'out'的传输中心选择*
按强制转换顺序(PRI作为有符号整数)描述
注意:这与理想的解决方案相差甚远!如果列被视为数字,则应使用正确的类型更改架构。什么是pris
?什么是pris
?@M.Pedersen此答案可帮助您删除数据库。是的,如果此列被视为数字,您应该更改架构。@M.Pedersen此答案有助于终止数据库。是的,如果此列应视为数字,您应该更改架构。