我有一张表如下:
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);
请帮助我查询中缺少的内容?
答案 0 :(得分:1)
看起来您使用错误的类型存储值。 Date列应为DATE类型,您的month列应为INT类型或更好的TINYINT。
将月份存储为VARCHAR会导致数据库将其排序为字符串。订购字符串将开始按字符检查char(比较' 9'' 10'将导致' 9'>' 1')。
将列更改为INT或TINYINT后,您的查询将起作用。
要提高较大表的性能,您还可以使用" LIMIT 1"在您的查询中,如果您只需要一行,那么您将无法获取整个表格。