将限制select和delete语句中的两个条件的工作相同

时间:2014-06-22 19:25:28

标签: mysql sql

我必须从表中选择未使用的项目,将带有其他信息的项目移动到将被称为useditems的已使用表格。当项目最终移动时,我必须从未使用的表中删除这些项目。

所以我写了下面的查询。

INSERT INTO USED select KNumber from unused limit 1000;
DELETE FROM unused limit 1000;

我唯一关心的一点是它总是选择相同的记录,因为我没有在查询中使用任何订单,而在表格中我只有单列。所以只删除插入的记录。

我是mysql的新手。

3 个答案:

答案 0 :(得分:1)

而是使用带有order by子句的limit子句来确保相同的记录选择并通过赢得排除限制,因为只有限制才可能最终插入/删除不同的设置数据,而您的目标是删除要插入的同一组数据。

INSERT INTO USED select KNumber from unused order by KNumber limit 1000;

DELETE FROM unused order by KNumber limit 1000;

答案 1 :(得分:0)

为确保该方法,您可以删除已放入USED表中的那些记录:

Delete from Unused 
    where kNumber in (
        select distinct kNumber from Used
        )

答案 2 :(得分:0)

根据所插入的数据,在insert上写下UsedUnused删除的触发器。

drop trigger if exists used_ai;
delimiter //
CREATE trigger used_ai after insert on used
for each row
begin
    delete from Unused where kNumber = New.kNumber;
end//
delimiter ;