【发布时间】:2020-07-26 05:26:55
【问题描述】:
这是想要实现的:-
- 从表 t 中获取一些行 (x)。
- 在所有这些 x 行中更改一个 col 值 (f)。
- 然后将这些 x 作为新行插入到同一个表 t 中。
此过程不适用于此错误:-
您不能在 FROM 子句中指定目标表 '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 ;
您能否建议一个替代查询来解决此用例?
【问题讨论】:
-
查看meta.stackoverflow.com/questions/333952/…,并考虑您是否真的需要一个程序。
标签: mysql sql stored-procedures