MySQL:使用条件
我必须向下执行以下情况,但运行时出现错误: SQL错误1064:您的SQL语法有错误;检查 与右边的MySQL服务器版本相对应的手册 使用near“INTO produto\u SERIAISERIAIS\u id值选择id”的语法 从序列号开始,其中第5行的序列号=' 情况如下: 我将通过序列X进入序列表。如果它已经存在,除非您的ID在produto_序列表中。如果有序列号,我将保存相同的序列号,恢复您的ID并保存到produto_Serais。有什么建议吗 重要提示:此例程将运行数千次,每次执行10000次或更多,具体取决于串行数据的数量MySQL:使用条件,mysql,Mysql,我必须向下执行以下情况,但运行时出现错误: SQL错误1064:您的SQL语法有错误;检查 与右边的MySQL服务器版本相对应的手册 使用near“INTO produto\u SERIAISERIAIS\u id值选择id”的语法 从序列号开始,其中第5行的序列号=' 情况如下: 我将通过序列X进入序列表。如果它已经存在,除非您的ID在produto_序列表中。如果有序列号,我将保存相同的序列号,恢复您的ID并保存到produto_Serais。有什么建议吗 重要提示:此例程将运行数千次,每次
注:很抱歉我的英语不好。你可以使用if exists..else语句
If exists (select * from ....)
Begin
Insert into ... Select id from table
End
Else
Begin
Insert..
End
请填写。。。。你的陈述。您可以使用此处的链接将其转换为MySQL。
尝试一个存储过程
DELIMITER //
CREATE PROCEDURE sp_produto_seriais(IN `p_serial_id`)
IF EXISTS (SELECT * FROM seriais WHERE serial = p_serial_id )
BEGIN
INSERT INTO produto_seriais (serial_id)
SELECT id
FROM seriais
WHERE serial = p_serial_id
END
ELSE
BEGIN
INSERT INTO seriais (serial) VALUE(p_serial_id);
INSERT INTO produto_seriais (serial_id) VALUES (LAST_INSERT_ID());
END //
DELIMITER ;
用法:
CALL sp_produto_seriais('2020')
您可以使用if,但if作为函数和if作为分支控件是有区别的。后者只能用于过程和触发器。您的SQL没有意义。请解释你想做什么。示例数据和期望的结果确实有帮助。@Mihai,你能帮我举个例子吗?你创建了存储过程吗?你可以直接使用INSERT INTO SELECT,如果没有行,则不会插入任何内容,如果它们大于正常值,则ELSE部分没有意义,因为您正在插入一个值,并且已检查该值是否存在于第一部分中。您可能需要一个插入后触发器,该触发器将在每次插入父项后将外键插入子项。这可以直接执行,也可以在过程中执行?我直接尝试并返回错误Erro SQL 1064:您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解要使用的正确语法,如“如果存在,请从seriais中选择id,其中serial='2020'开始插入”在第1行*@Danilo,答案中附带的链接将有助于转换为MySQL特定的语法。它也有一个例子。我只需要对我的案例做一些小的调整,但效果很好。谢谢你@meda
CALL sp_produto_seriais('2020')