【问题标题】:Condition with SELECT and INSERT statement in MySQLMySQL 中的 SELECT 和 INSERT 语句的条件
【发布时间】:2013-11-13 19:00:48
【问题描述】:

我想在条件等于 1 时创建SELECT 语句,这样就会执行INSERT 语句,否则它不会做任何事情。我认为您可以在我的代码中看到以下内容。

SET @var = 1;

SELECT IF(@var = 1, 
    INSERT INTO tabulka VALUES('value1','name1'),
    0
)

谢谢

【问题讨论】:

  • 条件或数字 3...这是您传入的参数还是另一个表中的某个参数或...?
  • 条件是行数据的函数吗?
  • Ït 只是示例。我有比这更困难的查询,但我真正需要的是当变量等于 1 时,它将执行“插入”语句。我不知道我是否需要'if'条件。
  • 查看this SO question的答案是否有帮助。
  • this answer 解释说 mysql 仅在 beginend 之间为存储过程(或触发器)识别 if...也许还有另一种方法可以做你想做。你能试着解释一下整个情况吗?你在使用 PHP 吗?存储过程适合您吗?

标签: mysql sql select insert conditional-statements


【解决方案1】:

您只需要一个 IF 语句,而不是一个 SELECT。

if
    @var = 1
then
    insert into tabulka values('value1', 'name1');
end if

【讨论】:

  • 您需要提供更多详细信息,说明您正在尝试执行的操作以及遇到的错误类型。
  • SET var = 1; IF var = 1 然后插入 tabulka values('value1', 'name1') end if
  • 当我执行这个语句时是的
  • 您还没有指定您遇到的错误。无论如何,这里有一个简单的 IF 语句示例:sqlfiddle.com/#!2/5f68b/1/1
【解决方案2】:

知道了!

http://sqlfiddle.com/#!2/66b33/1/0

create table test (
    int_field int, 
    str_field varchar(10) 
  );


set @var := 1;

insert into test 
   select  int_field, str_field 
   from    (select @var as int_field,
                   concat('var=',@var) as str_field 
           ) as temp
   where   @var=3;


set @var := 3;

insert into test 
   select  int_field, str_field 
   from    (select @var as int_field,
                   concat('var=',@var) as str_field 
           ) as temp
   where   @var=3; 


select * from test; 

结果:

int_field      str_field
3              var=3

【讨论】:

    猜你喜欢
    • 2014-06-14
    • 2011-12-04
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 2011-11-11
    • 1970-01-01
    相关资源
    最近更新 更多