sql查询更新表中的行并将这些行作为新行插入

wgmfuz8q  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(289)

这是我想要的achieve:-
从表t中获取一些行(x)。
在所有x行中更改一个列值(f)。
然后将这些x作为新行插入到同一个表t中。
此过程不适用于此error:-
不能在from子句中为update指定目标表“t”
这是我的程序

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 ;

你能为解决这个用例提出一个替代查询吗?

nwnhqdif

nwnhqdif1#

INSERT ... SELECT ... 应该有用。

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

相关问题