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

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

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

  1. DELIMITER //
  2. DROP procedure IF EXISTS copy_values //
  3. CREATE PROCEDURE copy_values(
  4. IN source_id char(36),
  5. IN dest_id char(36))
  6. BEGIN
  7. INSERT INTO t (a, b, c, d, e, f)
  8. VALUES (
  9. (SELECT a FROM t WHERE t_cid=source_id),
  10. (SELECT b FROM t WHERE t_cid=source_id),
  11. (SELECT c FROM t WHERE t_cid=source_id),
  12. (SELECT d FROM t WHERE t_cid=source_id),
  13. (SELECT e FROM t WHERE t_cid=source_id),
  14. dest_id
  15. );
  16. END //
  17. DELIMITER ;

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

nwnhqdif

nwnhqdif1#

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

  1. ...
  2. INSERT INTO t
  3. (a,
  4. ...
  5. e,
  6. f)
  7. SELECT a,
  8. ...
  9. e,
  10. dest_id
  11. FROM t
  12. WHERE t_cid = source_id;
  13. ...

相关问题