我有一张如下表(一张);
| Sl | NUMBER | Name |
----------------------
| 7 | 00007 | Name |
----------------------
| 8 | 00008 | Name |
----------------------
| 9 | 00009 | Name |
----------------------
| 10 | 00010 | Name |
----------------------
| 11 | 00011 | Name |
----------------------
| 12 | 00012 | Name |
----------------------
| 13 | 00013 | Name |
----------------------
我有这样的mysql语句;
$con = mysql_connect("localhost","root","password");
if (!$con){
die('Could not connect: ' . mysql_error());
}
mysql_select_db("dbname", $con);
$query = 'SELECT MAX(NUMBER) FROM tablename';//varchar 15 entry
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
$maxnumber = $row['MAX(NUMBER)'];
}
echo $maxnumber;
但它返回9而不是13.为什么?
答案 0 :(得分:1)
尝试更改查询,如下所示
$query = 'SELECT NUMBER FROM tablename ORDER BY NUMBER DESC LIMIT 0,1';
答案 1 :(得分:1)
您的number
字段似乎不是数字数据类型,而是字符串数据类型。您必须将其转换为数字数据类型才能获得正确的结果。请尝试以下代码:
$query = 'SELECT MAX(CAST(NUMBER as Int(12))) FROM tablename';
答案 2 :(得分:1)
使用此查询
SELECT
*
FROM tablename AS t
INNER JOIN (SELECT MAX(SL) AS SL FROM tablename) AS r ON r.SL = t.SL
答案 3 :(得分:0)
SELECT MAX(CAST(NUMBER AS UNSIGNED)) FROM tablename
答案 4 :(得分:0)
您表明column
数据类型为varchar
。 MAX
适用于数字。您需要将其强制转换或更改datatype
。
$query = 'SELECT MAX(CAST(NUMBER as UNSIGNED)) FROM tablename';
答案 5 :(得分:0)
由于您的数字列不仅仅是数字而是零填充,请尝试下降并获取第一个。
select number from tablename order by number desc limit 1;
答案 6 :(得分:0)
试试这个:
$query = 'SELECT MAX(NUMBER) as NUMBER FROM test';//varchar 15 entry
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
$maxnumber = $row['NUMBER'];
}
echo $maxnumber;
返回00013
答案 7 :(得分:0)
似乎有多种原因(虽然难以解释)。但我用一些笔记“清理”了一些不规范的代码。也许这应该有效。
1:假设NAME字段是VarChar,最好使用CAST函数将其转换为numberic。但这不是问题。
2:您正在阅读所有记录并尝试打印出循环。首先,您不需要循环。由于MAX预计会返回一条记录,因此这里的循环是多余的。
3:使用MAX这样的函数时,最好将结果值转换为另一个变量。但这不是问题。这更像是“清理”代码的建议。
现在回答......修改后的代码应该是这样的:
$query = 'SELECT MAX(NUMBER) As M FROM tablename';//varchar 15 entry
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result)
$maxnumber = $row['M'];
echo $maxnumber;
这应该这样做:)
答案 8 :(得分:0)
NUMBER的数据类型必须是Integer或任何数值数据类型,请重新检查... 你的查询是正确的。