我需要在插入前检查一个值。但由于某种原因,我无法弄明白。这是我的代码:
set @accID = (select id from table2);
IF @accID IS NOT NULL THEN
INSERT INTO task
(account_id)
VALUES (@accID);
END IF;
上面的代码有什么问题,因为它显示无效的sql语法错误?
答案 0 :(得分:1)
这应该就是你所需要的。
IF(@accID IS NOT NULL) 开始 插入任务 (帐户ID) 价值(@accID) END
答案 1 :(得分:0)
您可以通过略微奇怪的INSERT SELECT
INSERT INTO task (account_id)
SELECT @accID
FROM DUAL
WHERE @accID IS NOT NULL
;
DUAL是MySQL内置的假表;并且是必需的,因为如果没有WHERE
,您就无法拥有FROM
。
如果使用的RDBMS没有类似于DUAL的构造,很可能会用简单的子查询替换(SELECT 1) AS dummyTbl