我已经获得了一些包含几个查询的现有代码,并且我试图弄清楚功能是否正确。查询在一个简单的表上执行,其中存储了整数唯一ID。 所以代码执行第一个查询:
SELECT id FROM id_table LIMIT some_number;
然后它对检索到的id执行一些操作并将其从表中删除:
DELETE FROM id_table LIMIT some_number;
根据我在mysql中的理解,订单无法保证(并且没有指定ORDER BY)。那么第二个查询是否会删除在第一个查询中检索到的相同记录,因为没有其他人对id_table进行查询?
由于
答案 0 :(得分:2)
你不应该这样做。根本问题是,除非您使用order by
子句,否则无法保证使用limit
返回/删除行。
您应该在同一列中使用order by
和select
中的delete
,如下所示:
SELECT id from id_table order by id LIMIT some_number;
DELETE from id_table order by id LIMIT some_number;
您可以按照您想要的任何顺序进行排序,只要它是一致的,但id
将是auto_increment列的合理选择。