在Mysql中可变地设置列
执行以下操作的语法是什么:在Mysql中可变地设置列,mysql,sql,syntax,Mysql,Sql,Syntax,执行以下操作的语法是什么: INSERT INTO table SET IF *expression* column1 = 'value1' ELSE column2 = 'value2' 您将使用insert。使用案例语句选择: INSERT INTO table(column1, column2) select (case when *expression* then 'value1' end) as column1, (case when not *exp
INSERT INTO table
SET
IF *expression*
column1 = 'value1'
ELSE
column2 = 'value2'
您将使用
insert。使用案例
语句选择
:
INSERT INTO table(column1, column2)
select (case when *expression* then 'value1' end) as column1,
(case when not *expression* then 'value2' end) as column2;
但是,我怀疑您可能真的想要更新
,而不是插入
:
update table
set column1 = (case when *expression* then 'value1' else column1 end),
column2 = (case when not *expression* then 'value2' else column2 end);
解释您试图实现的目标这是
IF
的存储过程表示法。不能在语句中使用它。虽然它可以工作,但同一表达式必须求值两次。有没有办法避免这种行为(出于性能原因)?@user2180613。除非表达式包含一个子查询,否则不应出现多次求值的问题。如果有,我会要求您使用查询、样本数据和预期结果修改您的问题。插入
/更新
操作的成本要高得多。评估可能很简单,但将在数百万行上执行。