MySQL,需要删除第一行。

3

我在这里和网络上查找了很久,但没有找到答案。

由于某些原因我不想深入讨论,我需要从一个mysql数据库表中删除顶部行,然后刷新页面。

删除总是针对顶部行进行的,并且与该行的内容无关,因此使用where子句查询是无用的。

在我的php代码中,我认为应该能够调用以下代码:

mysql_deleterow(0);  // delete the top row from the table

并完成它。但是哦不,我找不到这样的调用。

是否有一种方法可以独立于其内容删除表格行? (如果您想问“为什么要这样做?”请重新阅读上面我说的“出于某些原因”,)

4个回答

5

这段代码可以帮你完成以下操作:

从你的表中删除一行数据 [按照指定字段排序],并且只删除一行数据。

你可以不加 ORDER BY


4
您可以使用此查询从数据库中删除行:
mysql_query('DELETE FROM table_name LIMIT 1');

刷新页面的方法如下:

header("Refresh: 0; url=".$_SERVER['PHP_SELF']);

1
你可以尝试使用DELETE FROM table LIMIT 1。如果这不能满足需求,你可以使用类似以下的命令:DELETE FROM table WHERE id=(SELECT id FROM table ORDER BY XXXX ASC LIMIT 1) LIMIT 1。第二种方法可以让你控制哪一行是首选项。

实际上,我不想讨论为什么,但我的代码将表格视为数组--它执行SELECT *,然后使用mysql_fetch_row()逐行显示每一行。因此,与fetch_row()检索行的顺序相同--我只想删除fetch_row()检索到的第一行。这有助于解释我想做什么吗? - wantTheBest
@wantthebest,我会先处理行,然后使用“TRUNCATE表”一次性删除所有行。这样会更快。 - Joshua Martell

0

不存在所谓的“顶部行”。您需要自己定义它,例如具有最低ID的行、最早的时间戳或类似内容(您也需要自己创建这些字段)。

如果我们将顶部行定义为具有最低ID的行,则可以按以下方式删除它:

DELETE FROM table ORDER BY id ASC LIMIT 1;

你也可以不使用 ORDER BY 语句来实现这一点,但在这种情况下,被删除的行是未定义的。这可能会或可能不会删除“顶部行”:

DELETE FROM table LIMIT 1;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接