Orderby MYSQL 语法错误数据

Orderby MYSQL Syntax Wrong Data

我有一个 Table 列 'Rechnungnr' 和 'Date'
例如 2016/204、2016/202、2016/100、2015/12、2016/231 我需要最后一个最高的数字。这里 -> 2016/231。

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

但这不起作用:(

Greetz,马尔特

尝试使用反引号包围的列名日期

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

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

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

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

使用您现有的数据集(如果我正确理解架构),您可以尝试这样的操作来获取一年中的第几天,将其转换为一个 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