gpt4 book ai didi

mysql - 使用 CASE WHEN 在过程外部执行 INSERT

转载 作者:行者123 更新时间:2023-11-29 10:40:17 27 4
gpt4 key购买 nike

当且仅当 table_1 中存在特定列时,我需要插入来自 SELECT 结果集的 table_2 值,然后该列必须从 table_1 中删除。否则什么都不会发生。

这都是关于DELIMITER吗?
据我所知,,因为代码不是过程声明的一部分。无论如何我尝试了一下,但似乎没有帮助。运行这么小的任务变得很棘手。

到目前为止,我的代码会触发来自 Workbench 的语法错误警告:

CASE
-- MysqlWorkbench complains (CASE is underlined) saying …
-- «Syntax error: 'CASE (case) is not valid input at this position'»
WHEN EXISTS (
SELECT * FROM information_schema.`COLUMNS`
WHERE `TABLE_SCHEMA` = 'bd_name'
AND `TABLE_NAME` = 'table_1'
AND `COLUMN_NAME` = 'name'
) THEN
INSERT INTO table_2 (caption,c_id)
SELECT DISTINCT label, c_id FROM bd_name.table_1;
ALTER TABLE table_1 DROP COLUMN label;
-- I'm not sure about how should I separate statements
-- regarding https://dev.mysql.com/doc/refman/5.7/en/case.html
END;
-- ("END" is underlined) Syntax error: extraneous input found - expected end of input

谢谢。

最佳答案

我认为 MySQL 不允许在例程、触发器、事件等之外进行过程构造...解决此问题的一种方法是将代码包装在 proc 声明中,然后在其后面调用 proc 和过程的一滴。

类似这样的事情:

DELIMITER $$

CREATE PROCEDURE foo()
BEGIN
Your stuff here;
and here;
END$$

DELIMITER ;

CALL foo();
DROP PROCEDURE foo();

关于mysql - 使用 CASE WHEN 在过程外部执行 INSERT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45622447/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com