Php 从表中删除X行

Php 从表中删除X行,php,mysql,sql,Php,Mysql,Sql,我想从列值相等的表中删除X行。为了更好地回答这个问题,我以sql查询的方式编写了这个问题,请理解: DELETE id FROM table_name WHERE column_value = 1 AND user_id = 2; 这个查询应该删除3行。如何实现这一点?可以使用LIMIT关键字(根据MySQL文档:): 用数字替换X 编辑:(关于评论) 我从规范中复制了这个,看起来它解决了您试图解决的问题: 要删除的MySQL特定限制行数选项告诉服务器 返回控件之前要删除的最大行数 客户。这可

我想从列值相等的表中删除X行。为了更好地回答这个问题,我以sql查询的方式编写了这个问题,请理解:

DELETE id FROM table_name WHERE column_value = 1 AND user_id = 2;

这个查询应该删除3行。如何实现这一点?

可以使用
LIMIT
关键字(根据MySQL文档:):

用数字替换
X

编辑:(关于评论)

我从规范中复制了这个,看起来它解决了您试图解决的问题:

要删除的MySQL特定限制行数选项告诉服务器 返回控件之前要删除的最大行数 客户。这可用于确保给定的DELETE语句 不会花太多时间。您只需重复删除即可 语句,直到受影响的行数小于限制 价值观

LIMIT
是一条特定于MySQL的指令,不能将其用作一般SQL查询,其他数据库(如PostgreSQL)可能无法执行此类查询

另一句话:您在查询中指定了
id
。如果删除行,则不应指定列


我已经使用SQL FIDLE对它进行了测试,它成功了:而且。

根据MySQL文档,它有:但一般来说不是SQL。我同意。当使用单表模式时,可以这样做,但当您混合使用两个或多个表或使用一个视图时不能。好的,它可以删除行3次吗(就像我在问题中问的那样)?我这样问是因为你有一行在小提琴上,而问题是只删除那一行。正如我在我的帖子中已经解释的,你不应该指定
id
。如果删除一行,则将其完全删除。正确的查询是
DELETE FROM table\u name,其中column\u value=1和uid=1 LIMIT 3
Brilliant!感谢headsup CommuSoft。非常感谢您的回复。我接受你最好的答案!上面的“显然”是高估了。显然。@user2854563您不能将一行(或任何内容)删除X次。你不能杀一个人两次。一旦死了,他就永远死了。但您可以删除X行。这就是您想要的限制查询删除的行数吗?@Commusoft。不,那是不正确的。SQL表中没有自顶向下的,最早的表也不会总是被删除。找到的符合条件的前X行将被删除,但首先找到哪些行取决于引擎/优化器将如何决定搜索、是否有可用索引(以及哪些索引)以及许多其他因素。所以Spacedog是正确的。@ypercubde@CommuSoft——我以前从未见过在delete上使用
limit
。也许mySQL以确定性的方式处理它,但我对此表示怀疑——我强烈怀疑它会被随机选择(基于以前的access/数据库引擎怪癖)删除的行。我也很难看到一个用例,也许如果你有X+1相同的行,并且你正试图清理数据库。依赖“在大多数情况下”会在将来的某个时候导致一个非常模糊的错误,除非您能确保该功能是可靠的。@Spacedog如果提供了一个
ORDER BY
,它是确定的。至于用例,我可以考虑在较小的批中删除大量行(避免一个巨大的DELETE语句)
DELETE FROM table_name WHERE column_value = 1 AND user_id = 2 LIMIT X;