MYSQL获取字母数字排序的最后一条记录
如何获取此表的最后一条记录:MYSQL获取字母数字排序的最后一条记录,mysql,Mysql,如何获取此表的最后一条记录: id trans_type trans_date reference_no 5804 RFBI 20151214 RFBI-20151214-1 5806 RFBI 20151214 RFBI-20151214-2 5809 RFBI 20151214 RFBI-20151214-3 5814 RFBI 20151214 RFBI-20151214-4 5818 RFBI 20
id trans_type trans_date reference_no
5804 RFBI 20151214 RFBI-20151214-1
5806 RFBI 20151214 RFBI-20151214-2
5809 RFBI 20151214 RFBI-20151214-3
5814 RFBI 20151214 RFBI-20151214-4
5818 RFBI 20151214 RFBI-20151214-5
5822 RFBI 20151214 RFBI-20151214-7
5823 RFBI 20151214 RFBI-20151214-8
5824 RFBI 20151214 RFBI-20151214-9
5825 RFBI 20151214 RFBI-20151214-10
5826 RFBI 20151214 RFBI-20151214-11
5827 RFBI 20151214 RFBI-20151214-12
5828 RFBI 20151214 RFBI-20151214-13
5821 RFBI 20151214 RFBI-20151214-14
5835 RFBI 20151214 RFBI-20151214-15
我可以使用此查询进行排序
SELECT id,`trans_type`,`trans_date`,`reference_no`
FROM (`tbl_transaction` as trans)
WHERE (`trans_type` = 'RFBI'
AND `trans`.`trans_date` = '20151214')
ORDER BY LENGTH(reference_no), `reference_no`
我需要最后一个参考号
5835 RFBI 20151214 RFBI-20151214-15
我在想这个问题
SELECT id,`trans_type`,`trans_date`,`reference_no`
FROM (`tbl_transaction` as trans)
WHERE (`trans_type` = 'RFBI'
AND `trans`.`trans_date` = '20151214')
ORDER BY LENGTH(reference_no), `reference_no` DESC
LIMIT 1
但结果是:
5824 RFBI 20151214 RFBI-20151214-9
您需要按的顺序描述两次:
SELECT id, trans_type, trans_date, reference_no
FROM `tbl_transaction` trans
WHERE `trans_type` = 'RFBI' AND `trans`.`trans_date` = '20151214'
ORDER BY LENGTH(reference_no) DESC, `reference_no` DESC
------------------------------^
LIMIT 1
您需要按的顺序描述两次:
SELECT id, trans_type, trans_date, reference_no
FROM `tbl_transaction` trans
WHERE `trans_type` = 'RFBI' AND `trans`.`trans_date` = '20151214'
ORDER BY LENGTH(reference_no) DESC, `reference_no` DESC
------------------------------^
LIMIT 1
您可以这样做:
select id, trans_type, trans_date, reference_no
from tbl_transaction
where trans_type = 'RFBI'
and trans_date = '20151214'
order by id desc
limit 1
做同样事情的另一种方法是删除最后的实际数字参考号(但性能可能需要注意…我只是提供做同样事情的附加方法)
在上面的方法中,我们利用了引用号由trans_类型和trans_日期以及破折号组成的事实。我们删除这些,只留下数字部分,并将数字转换为无符号整数。我们先按最高值排序,然后取第一个记录
这就引出了一个建议——您能不能在reference\u no列中存储一个整数?这样,您的排序将更加容易,您的存储需求将下降到一个整数(4字节)。你在上面的索引也会更小。当选择
ing data时,您可以只concat
trans\u type、trans\u date和参考号。您可以这样做:
select id, trans_type, trans_date, reference_no
from tbl_transaction
where trans_type = 'RFBI'
and trans_date = '20151214'
order by id desc
limit 1
做同样事情的另一种方法是删除最后的实际数字参考号(但性能可能需要注意…我只是提供做同样事情的附加方法)
在上面的方法中,我们利用了引用号由trans_类型和trans_日期以及破折号组成的事实。我们删除这些,只留下数字部分,并将数字转换为无符号整数。我们先按最高值排序,然后取第一个记录
这就引出了一个建议——您能不能在reference\u no列中存储一个整数?这样,您的排序将更加容易,您的存储需求将下降到一个整数(4字节)。你在上面的索引也会更小。当
选择ing data时,您可以只concat
trans\u type、trans\u date和参考编号。尝试在您的按区域排序中使用DESC或ASC,然后使用限制0,1可能会有帮助您是否尝试过按参考编号排序
,如果它将用作某个记录或组集的筛选器/标识符,则需要增强。请尝试在“按区域排序”中使用DESC或ASC,然后使用“限制0,1”可能会有所帮助您是否尝试了“按引用排序”\u no DESC
?我认为列,reference\u no,如果将其用作特定记录或组集的筛选器/标识符,则需要进行增强。