订单MYSQL语法错误的数据

时间:2016-04-28 15:33:42

标签: mysql sql-order-by

我有一个带有专栏的表' Rechnungnr'和'日期'
示例2016 / 2004,2016 / 201,2016 / 100,2015 / 12,2016 / 2131 我需要最后一个最高的数字。这里 - >二百三十一分之二千〇一十六。

SELECT * FROM TABLE Where YEAR(Date) = '2016' ORDER BY length(`Rechnungnr`) DESC LIMIT 1

但那不起作用:(

Greetz,Malte

3 个答案:

答案 0 :(得分:0)

尝试使用由backtics包围的列名称日期

 SELECT * FROM TABLE Where YEAR(`Date`) = '2016' ORDER BY length(`Rechnungnr`) DESC LIMIT 1

答案 1 :(得分:0)

使用char_length()和rechnungnr值的组合以这种方式获得最大值:

SELECT * FROM TABLE
Where YEAR(Date) = 2016 ORDER BY char_length(`Rechnungnr`) DESC, `Rechnungnr` DESC LIMIT 1

char_length()将按Rechnungnr字段中的字符数对结果进行排序,然后在相同长的字符串中,我们按字段本身的值排序。

答案 2 :(得分:0)

使用您现有的数据集(如果我正确理解了架构),您可以尝试这样的事情来获取一年中的某一天,将其转换为int然后对其进行排序:

SELECT *, CAST(RIGHT(LENGTH(`Rechnungnr`) - (INSTR(`Rechnungnr`, '/') + 1)) AS UNSIGNED) AS `DayOfYear` FROM TABLE Where YEAR(Date) = '2016' ORDER BY `DayOfYear` DESC LIMIT 1