0

我正在尝试编写一个双 MySQL 查询,它将一个表的内容存档到另一个表,然后删除原始表中的原始行。

我的基本查询在其他领域工作得很好。下面的查询依赖于第二个表来帮助选择需要归档和删除的行。

我收到语法错误,其中 AS 出现在第一个查询的嵌套选择中,并且在删除查询中的 AS 附近。

我已经研究和研究并尝试了一堆不同的代码组合,但我无法让查询正常工作。查询是使用 PDO 用 PHP 编写的,所以请忽略 PDO 标签,它们不是问题。

INSERT INTO usetwca (r_id, c_id, o_id, t_id, s_id, ip_address, timestamp, timestamp_archived) SELECT :r_id, usetwc.c_id, usetwc.o_id, usetwc.t_id, usetwc.s_id, usetwc.ip_address, usetwc.timestamp, :timestamp FROM usetwc JOIN useo ON useo.o_id = usetwc.o_id AND useo.best_fit IS NULL WHERE usetwc.user_id = :user_id;

DELETE FROM usetwc JOIN useo ON useo.o_id = usetwc.o_id AND useo.best_fit IS NULL WHERE usetwc.user_id = :user_id;
4

2 回答 2

1

您应该将其实现为BEFORE DELETE“users_sessions_exercise_t_ws_correlation”表上的触发器。

看看这个答案作为一个很好的例子。

这是使用Triggers for Logging的一个很好的一般参考。

于 2013-08-22T18:56:38.630 回答
0

我能够让我的查询正常工作。

INSERT INTO usetwca (r_id, c_id, o_id, t_id, s_id, ip_address, timestamp, timestamp_archived) SELECT :r_id, usetwc.c_id, usetwc.o_id, usetwc.t_id, usetwc.s_id, usetwc.ip_address, usetwc.timestamp, :timestamp FROM usetwc JOIN useo ON useo.o_id = usetwc.o_id AND useo.best_fit IS NULL WHERE usetwc.user_id = :user_id;

DELETE usetwc FROM usetwc INNER JOIN useo ON useo.o_id = usetwc.o_id AND useo.best_fit IS NULL WHERE usetwc.user_id = :user_id
于 2013-08-23T13:10:19.037 回答