我有一张桌子,如下所示:
id date custid billno month amount balance
64 07-Jun-2015 1 102 5 9192 0
134 05-Jul-2015 1 172 6 9744 0
235 01-Aug-2015 1 277 7 4032 0
435 04-Sep-2015 1 461 8 3024 0
747 22-Sep-2015 1 597 9 2875 0
958 06-Nov-2015 1 789 10 3100 0
我想获得最大月份数的行,即我想获得第10个月的行
如果我使用以下查询,那么它将给出第9个月的行
$get_lst = mysql_query("select * from `ledger` where `custid`='$custid' order by `month` DESC") or die(mysql_error());
$get_lst = mysql_fetch_assoc($get_lst);
print_r($get_lst);
请帮助我查询中缺少的内容吗?
似乎您使用错误的类型存储了值。日期列应为DATE类型,而月份列应为INT甚至更好的TINYINT类型。
将month存储为VARCHAR会使数据库将其排序为字符串。订购字符串将开始逐字符检查字符(将“ 9”与“ 10”进行比较将得出“ 9”>“ 1”)。
将列更改为INT或TINYINT后,您的查询将起作用。
为了提高较大表的性能,您还可以在查询中使用“ LIMIT 1”,这样,如果只需要一行,就不会获取整个表。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句