0

我想通过用户定义的整数(1 到 rowCount())从我的一个 .sql 表中删除一行。下面是伪代码,但它说明了我想要的。

$i = 1; //example
$quedb = $db->query("
    DELETE *
        FROM table
        WHERE ROWNUMBER = '$i'
");

有没有办法在 SQL 环境中做到这一点?我不想删除基于特定元素的行(我的一个朋友建议在我定义的行中查询一个元素,但我只想删除第 n 行,其中 n 是用户定义的)。

4

2 回答 2

1

你不应该那样做。
在数据库的上下文中,“第 n 行”是无稽之谈。
数据库与您熟悉的列表不同。它们根本没有预定义的顺序。数据库是一个抽象的行堆,它们只在选择时间接受排序, 总是不同的,基于选择排序的字段。

要识别一行,您必须使用唯一标识符,它是为了达到这个目的而发明的。
因此,将idauto_incremented 主键字段添加到表中并使用它来标识行。“其他表”不仅是保持一致性的理由。无论您添加或删除了某些行,您自己在网站上的链接也需要一致的地址。

如果要枚举输出,请在选择时间使用 PHP。这是唯一正确的方法。

请在发明自己的轮子之前,学习数据库设计的基础知识。
或者至少听从更有经验的人的好建议。

于 2013-01-02T06:01:13.260 回答
-1

您可以使用嵌套查询来做到这一点。像这样...

从公司 id 的表中删除(从表限制 5,1 中选择 id)

但实际上不建议这样做,因为行为不是很一致。

于 2013-01-02T05:45:32.563 回答