Php 从一张桌子移到另一张桌子

Php 从一张桌子移到另一张桌子,php,mysql,database,move,Php,Mysql,Database,Move,我需要将一些数据从表移动到存档表 现在我这样做: $sql = 'INSERT INTO history_products SELECT * FROM products WHERE category_id='.$id; 然后我从products表中删除数据 $sql_delete = 'DELETE FROM products WHERE category_id = '.$id; 每个产品都有一个唯一的id。 但我想以一种安全的方式实现这一点,现在即使一行没有插入到历史产

我需要将一些数据从表移动到存档表

现在我这样做:

$sql = 'INSERT INTO history_products 
         SELECT * FROM products WHERE category_id='.$id;
然后我从products表中删除数据

$sql_delete = 'DELETE FROM products WHERE category_id = '.$id;
每个产品都有一个唯一的id。
但我想以一种安全的方式实现这一点,现在即使一行没有插入到历史产品中,该行也将从产品表中删除。如果插入失败,我不想删除。

如果使用唯一键,则从具有与历史记录表中相同键的产品中删除所有记录。

如果使用唯一键,则从具有与历史记录表中相同键的产品中删除所有记录。

我希望您有一个名为id ProduktID的字段,哪些产品在两个表中必须具有相同的id?那么,下面的操作应该可以


从products where products.id中删除从history\u products.id from history\u products

我希望您有一个名为id ProduktID的字段,这两个表中的哪些产品必须具有相同的id,然后,以下操作应该可以

DELETE FROM products WHERE category_id IN (SELECT category_id FROM history_products)
从products中删除,其中products.id位于从history\u products中选择history\u products.id

DELETE FROM products WHERE category_id IN (SELECT category_id FROM history_products)
这只会删除产品表中的记录,其中历史记录和产品中存在相应的记录



这只会删除产品表中的记录,其中历史记录\u产品中存在相应的记录。

这意味着我必须在插入后进行另一次选择才能插入所有行?!不,我想他是指我所说的。。在DELETENo SELECT的WHERE子句中,使用两个表中必须相同的唯一产品id。只是一个删除的地方。这意味着我必须在插入后进行另一次选择才能插入所有行?!不,我想他是指我所说的。。在DELETENo SELECT的WHERE子句中,使用两个表中必须相同的唯一产品id。仅删除其中一项。这仍将删除与未移动的类别相同的记录。您仍在删除整个类别。。。mich的方法是使用productid,从历史记录表中删除id为的产品。好的,将category_id更改为两边主键字段的任何内容-非常简单。这仍然会删除未移动的相同类别的记录。u仍然会删除整个类别。。。mich的方法是使用productid,从历史记录表中删除id为的产品,将category\u id更改为主键字段两侧的任何内容-足够简单。这样我认为:从产品中删除,其中category\u id=$category\u id和products.id在选择历史中\u products.id在选择历史中\u products.id在选择历史中\u products.id从产品中删除。category\u id=$category\u id和products.id在选择历史中history_products和history_products.category_id=$category_id,这将使集合中的计数变小,整个执行过程可能会变快一点?或者这样做?:从产品中删除,其中选择history_products.id中的products.id来自history_products,其中category_id=$category_id?U是对的,我犯了一个C&P错误;但我会用Where's两种方式使用category,我认为:从产品中删除category\u id=$category\u id和products.id(在选择历史记录中)\u products.id(在选择历史记录中)\u products\u products中)从产品中删除category\u id=$category\u id和products.id(在选择历史记录中)\u products和历史记录中).category\u id=$category\U id将使集合中的计数变小,整个执行可能会加快一点或者这样做?:从products WHERE products.id IN SELECT history\U products.id FROM history\U products WHERE category\U id=$category\U id?U是对的我犯了一个C&P错误;但我会在Where's和Where's中使用categorie