1

我想插入记录,如果它不存在 2 列,如果存在更新第 3 列,这是查询:

INSERT INTO aktai_islaidos_id (akto_id, islaidos_id, savikaina)
       SELECT * FROM (SELECT ? as a, ? as b, ? as c) AS tmp
       WHERE NOT EXISTS (
             SELECT akto_id, islaidos_id, savikaina FROM aktai_islaidos_id 
             WHERE akto_id = a AND islaidos_id = b
       ) ON DUPLICATE KEY UPDATE savikaina = VALUES(c);

现在我收到错误什么 c 在字段列表中不存在,我明白为什么,但我不知道如何正确完成此查询,也没有找到任何示例,例如仅选择重复所有列的地方,谢谢!

编辑:用存储过程解决了这个问题:

CREATE PROCEDURE update(
       IN akt_id INT,
       IN isl_id INT,
       IN sav INT)
BEGIN
       IF (SELECT count(*) FROM aktai_islaidos_id WHERE akto_id = akt_id AND islaidos_id = isl_id) > 0 THEN
            BEGIN
                 UPDATE aktai_islaidos_id SET savikaina = sav WHERE akto_id = akt_id AND islaidos_id = isl_id;
            END;
       ELSE
            BEGIN
                 INSERT INTO aktai_islaidos_id (akto_id, islaidos_id, savikaina) VALUES (akt_id, isl_id, sav);
            END;
       END IF;
END
4

0 回答 0