我想从具有相等列值的表中删除 X 行。为了更好的解决这个问题,我用sql查询的方式写这个问题,请理解:
DELETE id FROM table_name WHERE column_value = 1 AND user_id = 2;
这个查询应该删除 3 行。我怎样才能做到这一点?
可以使用LIMIT
关键字(根据 MySQL 文档:http ://dev.mysql.com/doc/refman/5.0/en/delete.html ):
DELETE FROM table_name WHERE column_value = 1 AND user_id = 2 LIMIT X;
你X
用数字替换的地方。
编辑:(关于评论)
我从规范中复制了这个,看起来它解决了你试图解决的问题:
用于 DELETE 的 MySQL 特定的 LIMIT row_count 选项告诉服务器在将控制权返回给客户端之前要删除的最大行数。这可用于确保给定的 DELETE 语句不会花费太多时间。您可以简单地重复 DELETE 语句,直到受影响的行数小于 LIMIT 值。
LIMIT
是 MySQL 特定指令,您不能将其用作通用 SQL 查询,其他数据库(如 PostgreSQL)可能无法执行此类查询。
另注:您id
在查询中指定。如果删除行,则不应指定列。
我已经使用 SQL Fiddle 对其进行了测试,它成功了:http://sqlfiddle.com/#!2/13ccb7/1/0和http://sqlfiddle.com/#!2/258203/1/0。