mysql query INSERT INTO in a conditional statements (case if/else)
我试图弄清楚要插入到CASE语句中的INSERT INTO之类的mysql中使用条件语句
1 2 3 4 5 6 |
我正在按照如何在MySQL查询中编写IF ELSE语句的建议使用
但是当我尝试时,我不断得到:
1 |
http://sqlfiddle.com/#!9/dcb16/22063
所以我正在尝试使用if / else方法...
但这给出了相同的错误
1 |
http://sqlfiddle.com/#!9/dcb16/22081
所以我假设这不可能在mysql中完成? https://stackoverflow.com/a/13681306/1267259
(但是,OP没有收到相同的错误吗?)
当我写这个问题时,我发现使用基于Count的IF ELSE语句来执行不同的Insert语句
是使用过程来做到这一点的唯一方法吗?
记住IF()函数和IF语句之间的区别。
您可以实现的一种选择是使用函数(13.1.12 CREATE PROCEDURE和CREATE FUNCTION语法):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | /* CODE FOR DEMONSTRATION PURPOSES */ DELIMITER // CREATE FUNCTION `insert_new_value` (`p_foo` INT UNSIGNED) RETURNS TINYINT(1) DETERMINISTIC BEGIN /* INSERT INTO table1 (`id`, `column`) VALUE (1, 'a'); SET @bar = SELECT LAST_INSERT_ID(); -- UPDATE table2 SET c1 = @foo WHERE c2 = @bar; UPDATE table2 SET c1 = `p_foo` WHERE c2 = @bar; */ INSERT INTO `ForgeRock` (`id`, `productName`, `description`) VALUES (4, 'a', 'b'); RETURN 1; END// DELIMITER ; SET @foo := 1; -- You can also use CASE expression. SELECT IF(1, `insert_new_value`(@foo), 0) INTO @`return_value`; /* CODE FOR DEMONSTRATION PURPOSES */ |
SQL提琴程序demo