【问题标题】:mysql error on run query运行查询时的mysql错误
【发布时间】:2015-09-16 13:26:58
【问题描述】:

这是我在 mysql 中的查询(我使用 phpmyadmin 执行查询)。 但我无法执行.... 可以帮帮我吗?

SELECT count(*) into @cnt FROM `oie_option` WHERE `opt_name` =CONCAT('earning1391',pmonth('2015-09-09')))
if(@cnt <=0)then
INSERT INTO oie_option ('opt_name','opt_value') VALUES (CONCAT('earning1391',pmonth('2015-09-09')),1000);
end if;

这是错误:

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在 ') 附近使用的正确语法

如果(@cnt

为什么? 谢谢

【问题讨论】:

  • pmonth() 函数是做什么的?
  • 将日期转换为波斯日期是我的功能
  • 您不能在查询中使用 if-else 等,它们只允许在存储函数、过程或触发器中使用。
  • 谢谢,正是我在触发器创建中使用了这个查询......并返回这个错误
  • 去掉列名('opt_name','opt_value')中的单引号,应该是(opt_name,opt_value)

标签: mysql database insert


【解决方案1】:

我认为您在第一个查询中缺少分号。

    SELECT count(*) into @cnt FROM `oie_option`
     WHERE `opt_name` =CONCAT('earning1391',pmonth('2015-09-09'));
    if(@cnt <=0)then
    INSERT INTO oie_option ('opt_name','opt_value') VALUES 
     (CONCAT('earning1391',pmonth('2015-09-09')),1000);
     end if;

【讨论】:

    【解决方案2】:

    我试图重现你的情况,这就是我得到的:

    1. 您需要将代码放在存储过程或函数中才能使用 IF 语句 https://stackoverflow.com/a/12954385/5308054。 在这里你可以看到修复它的功能请求https://bugs.mysql.com/bug.php?id=48777
    2. 你可以避免在这样的查询中使用 if 语句

      INSERT INTO oie_option ('opt_name','opt_value') 
      SELECT CONCAT('earning1391',pmonth('2015-09-09')),1000
      FROM oie_option
      WHERE (SELECT count(*) FROM `oie_option` WHERE `opt_name`=CONCAT('earning1391',pmonth('2015-09-09')))=0
      LIMIT 1;
      

    【讨论】:

      【解决方案3】:

      感谢亲爱的朋友 我声明变量并更正。

      > DECLARE cnt INT DEFAULT 0; SELECT count(*) INTO cnt FROM oie_option WHERE opt_name = CONCAT('earning1391', pmonth (now()));

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-16
        • 2014-03-18
        • 2014-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多