SQL 查询 table 中的更新行并将其作为新行插入

SQL query for update rows in a table and insert those as new rows

这是要实现的:-

此程序无法正常工作,出现此错误:-

You can't specify target table 't' for update in FROM clause

这是我的程序

DELIMITER //
DROP procedure IF EXISTS copy_values //
CREATE PROCEDURE copy_values(
IN source_id char(36), 
IN dest_id char(36))
BEGIN
INSERT INTO t (a, b, c, d, e, f)
VALUES (
    (SELECT a FROM t WHERE t_cid=source_id), 
    (SELECT b FROM t WHERE t_cid=source_id), 
    (SELECT c FROM t WHERE t_cid=source_id), 
    (SELECT d FROM t WHERE t_cid=source_id), 
    (SELECT e FROM t WHERE t_cid=source_id), 
    dest_id
    );
END //
DELIMITER ;

您能否建议解决此用例的替代查询?

INSERT ... SELECT ... 应该可以。

...
INSERT INTO t
            (a,
             ...
             e,
             f)
            SELECT a,
                   ...
                   e,
                   dest_id
                   FROM t
                   WHERE t_cid = source_id;
...