我正在尝试按DESC顺序订购一些MySQL记录,并添加最后一条记录。
这些是我的记录,它们都存储为字符串:
1/2017
1/2018
2/2017
2/2018
3/2017
我想获得1/2018的价值。记录基于当前年份 最后添加的记录是1/2018,下一个记录是2/2018,依此类推。
这是我的疑问:
SELECT NoControl FROM cita ORDER BY NoControl DESC LIMIT 1
但是我最后的记录是3/2017。
答案 0 :(得分:2)
如果你有相同的模式m / yyyy你可以使用一些字符串操作函数,例如:
SELECT NoControl
FROM cita
ORDER BY right(NoControl,4), DESC left(NoControl,1) DESC LIMIT 1
但是你应该避免将商店日期值作为字符串..
或将字符串转换为正确的日期
SELECT NoControl
FROM cita
ORDER BY str_to_date(NoControl,'%m/%Y') DESC LIMIT 1
答案 1 :(得分:1)
使用SUBSTRING_INDEX
提取第一和第二部分,CAST为整数并排序:
SELECT str
FROM testdata
ORDER BY
CAST(SUBSTRING_INDEX(str, '/', -1) AS UNSIGNED) DESC,
CAST(SUBSTRING_INDEX(str, '/', 1) AS UNSIGNED) DESC
LIMIT 0, 1