截断MySQL中的空表

时间:2013-08-23 12:29:55

标签: php mysql

我试图这样做:

mysql_query("IF(SELECT COUNT( * ) FROM`messages`) = 0 {
        ALTER TABLE `messages` AUTO_INCREMENT = 1
    }
    IF(SELECT COUNT( * ) FROM`chats`) = 0 {
        ALTER TABLE `chats` AUTO_INCREMENT = 1
    }
    IF((SELECT COUNT( * ) FROM`messages`) = 0 && (SELECT COUNT( * ) FROM`chats`)) {
        ALTER TABLE `users` AUTO_INCREMENT = 1
    }");

但它不正确

如果消息为空,我需要在消息中重置A_I,如果消息为空则重置A_I,如果消息和聊天是空的则在用户中重置A_I

我有自动增量ID,截断后它将从1开始计数

你有什么想法吗?

我需要一个查询来使用我编写的逻辑重置3个表中的自动增量

2 个答案:

答案 0 :(得分:0)

试试这个:

ALTER TABLE `table` AUTO_INCREMENT = 1

顺便说一句,你有一个括号问题,你应该用括号括起你的条件。

IF ((SELECT COUNT( * ) FROM`chats`) = 0) {

答案 1 :(得分:0)

你把if放在php中怎么样:

$res1 = mysql_query("SELECT count(*) AS count FROM `messages`");

$row1 = mysql_fetch_object($res1);

if ($row1->count == 0) {
    mysql_query("ALTER TABLE `messages` AUTO_INCREMENT = 1");
}

$res2 = mysql_query("SELECT count(*) AS count FROM `chats`");

$row2 = mysql_fetch_object($res2);

if ($row2->count == 0) {
    mysql_query("ALTER TABLE `chats` AUTO_INCREMENT = 1");
}

if ($row1->count == 0 && $row2->count == 0) {
    mysql_query("TRUNCATE TABLE `users`");
}