如何获取具有最大值的表的行

时间:2015-12-08 10:37:42

标签: php mysql

我有一张表如下:

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);

请帮助我查询中缺少的内容?

1 个答案:

答案 0 :(得分:1)

看起来您使用错误的类型存储值。 Date列应为DATE类型,您的month列应为INT类型或更好的TINYINT。

将月份存储为VARCHAR会导致数据库将其排序为字符串。订购字符串将开始按字符检查char(比较' 9'' 10'将导致' 9'>' 1')。

将列更改为INT或TINYINT后,您的查询将起作用。

要提高较大表的性能,您还可以使用" LIMIT 1"在您的查询中,如果您只需要一行,那么您将无法获取整个表格。

相关问题