mysql - IF 在 MySql 中构建产生错误 #1064

标签 mysql

<分区>

我正在尝试在 phpMyAdmin 中运行以下代码:

set @tagTokenNum=0;
select @tagTokenNum:=tag_token_id from tag_token where tag_token_name = 'XXX';
delimiter go
if @tagTokenNum is null then 
   insert into tag_token (tag_token_name) values ('XXX');
   select @tagTokenNum:=last_insert_id();
end if;
go

我也试过没有分隔符语句和相应的go。我收到错误消息“#1064 - 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本对应的手册,了解在‘if @tagTokenNum is null then insert into tag_token ...’附近使用的正确语法”

据我所知,我在 MySql 中遵循 IF 语句的正确语法。我对 Microsoft SQL 更熟悉,所以我完全有可能做错了什么。如果您能提供任何帮助,我将不胜感激。谢谢。 - 戴夫

最佳答案

ISTR,您只能在存储过程中使用 if 语句,引用:mysql 文档 ...An IF ... END IF block, like all other flow-control blocks used within stored programs... .

但是我认为您可以通过以下方式实现相同的目的:

insert into tag_token (tag_token_name) values ('XXX')
    ON DUPLICATE KEY UPDATE tag_token_name = tag_token_name;

select @tagTokenNum:=tag_token_id from tag_token where tag_token_name = 'XXX'

关于mysql - IF 在 MySql 中构建产生错误 #1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/217343/

相关文章:

mysql - 将 Angular 与数据库中的动态数据绑定(bind)

c# - 连接c#.net到phpmyadmin数据库(MysqL)

php - MySQL新用户的问题

php - 如何将值从 jquery 发布到 php

php - 如何保护网站免受批量抓取/下载?

php - 在 php 和 mysql 中使用占位符来防止注入(inject)

php - 如何从两个不同的表中同时获取多个用户的数据?

javascript - PHP:如果先前已选择该值并将其存储在数据库中,如何从复选框组中删除/禁用选择

mysql - Sequelize 迁移文件 : adding createdAt and updatedAt columns

PHP 回显 MySQL SELECT 的结果