我必须执行以下情况,但是当你跑步时遇到错误:
SQL错误(1064):您的SQL语法中有错误;检查 手册,对应右边的MySQL服务器版本 语法使用' INTO produto_seriais(serial_id)VALUES(SELECT id FROM seriais WHERE serial ='在第5行
SELECT CASE WHEN (
SELECT COUNT(id) FROM seriais WHERE serial = '2020'
) > 1
THEN
(INSERT INTO produto_seriais(serial_id) VALUES(
SELECT id FROM seriais WHERE serial = '2020'
))
ELSE (
INSERT INTO seriais (serial) VALUE('2020');
SET @last_id_in_table1 = LAST_INSERT_ID();
INSERT INTO produto_seriais (serial_id) VALUES (@last_id_in_table1);
)
END;
案例如下:
我会进入" serial"表格连续" X"。如果它已经存在,除非您的ID在" produto_seriais"表。如果有(序列号),我将保存相同的内容,恢复您的ID并保存到" produto_seriais"。有关如何做到这一点的任何建议吗?
重要说明:此例程每次执行将运行数千次(10,000或更多,具体取决于串行数量)。
P.s。:抱歉我的英语不好。
答案 0 :(得分:0)
您可以使用if exists..else语句。
If exists (select * from ....)
Begin
Insert into ... Select id from table
End
Else
Begin
Insert..
End
请填写....与您的陈述。您可以使用此处的链接将其转换为MySQL。 Convert if exists for MySQL
答案 1 :(得分:0)
尝试存储过程
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')