mysql - 仅当 IF 条件为真时才插入

标签 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 子句为真时才应执行插入。

最佳答案

您可以执行 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
;

关于mysql - 仅当 IF 条件为真时才插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38510484/

相关文章:

c# - 从变量更改 if 语句

if-statement - 判断(if)中的nil值的更简单方法?

java - 如何使用JSQLParser将插入sql语句转换为删除sql语句

php - 为什么 mysqli 插入不起作用?

php - 如何在mysql和php中使用非utf字符进行搜索

sql - MySQL - 获取多个分组行的摘要?

mysql在MSSQL中构造 "insert into ... select ... on duplicate key update"

c - 如何解决我的 if 语句不被识别为 true 的问题

sql - 使用 PostgreSQL 9.3 在 CTE UPSERT 中生成 DEFAULT 值

PHP 创建 API 连接同一服务器上的 2 个应用程序