仅在IF条件为真时才插入

时间:2016-07-21 17:15:23

标签: mysql if-statement sql-insert

我想知道当IF-Condition为真时是否有可能在表中插入一行:

 SET @Value1 := '1'; 
 SET @Value2 := '2'; 
 IF(@Value2 >= @Value1) 
     THEN INSERT INTO `Table` 
     (`Row1`, `Row2`) 
     VALUES 
     ('Valuecheck', 'Second value is greater than first value');
 END IF;

MySQL报告错误#1064 - 您的SQL语法出错,但我找不到有问题。只应在IF子句为真时执行插入。

2 个答案:

答案 0 :(得分:1)

基于this answer,以下内容应该有效:

SET @Value1 := '1'; 
SET @Value2 := '2'; 
INSERT INTO `table` (`Row1`, `Row2`) 
    VALUES 
    ('Valuecheck', 'Second value is greater than first value');
WHERE @Value2 >= @Value1

答案 1 :(得分:1)

您可以执行INSERT...SELECT并将您的条件置于WHERE条款中;但是,由于MySQL需要FROM并且您没有引用表格,因此您需要使用它"虚拟"表,称为DUAL。

像这样:

SET @Value1 := '1'; 
SET @Value2 := '2'; 

INSERT INTO `Table`(`Row1`, `Row2`) 
SELECT 'Valuecheck', 'Second value is greater than first value'
FROM DUAL
WHERE @Value2 >= @Value1
;