3 回答

TA贡献1827条经验 获得超8个赞
如果仅是要获取记录(行)数,则建议使用:
SELECT TABLE_ROWS
FROM information_schema.tables
WHERE table_name='the_table_you_want' -- Can end here if only 1 DB
AND table_schema = DATABASE(); -- See comment below if > 1 DB
(至少对于MySQL)。

TA贡献1884条经验 获得超4个赞
以下是查找AUTO_INCREMENT表的下一个值的最有效方法。即使在包含数百万个表的数据库上,这也很快,因为它不需要查询潜在的大型information_schema数据库。
mysql> SHOW TABLE STATUS LIKE 'table_name';
// Look for the Auto_increment column
但是,如果必须在查询中检索此值,则information_schema必须转到数据库。
SELECT `AUTO_INCREMENT`
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'DatabaseName'
AND TABLE_NAME = 'TableName';

TA贡献1796条经验 获得超7个赞
如果您通过编写选择查询直接获得最大数量,则您的查询可能会给出错误的值。例如,如果您的表有5条记录,那么您的增量ID将为6,如果我删除5号记录,则您的表中有4条记录,最大ID为4,在这种情况下,您将获得5作为下一个增量ID。提示您可以从mysql Defination本身获取信息。通过在php中编写以下代码
<?
$tablename = "tablename";
$next_increment = 0;
$qShowStatus = "SHOW TABLE STATUS LIKE '$tablename'";
$qShowStatusResult = mysql_query($qShowStatus) or die ( "Query failed: " . mysql_error() . "<br/>" . $qShowStatus );
$row = mysql_fetch_assoc($qShowStatusResult);
$next_increment = $row['Auto_increment'];
echo "next increment number: [$next_increment]";
?>
添加回答
举报