【问题标题】:if insert works then如果插入有效,那么
【发布时间】:2020-05-16 21:46:53
【问题描述】:

所以我试图检查一个表条目是否等于另一个表条目,如果它是 更新表格 如果没有放入新条目

我在 if 存在时遇到错误?我试过移动开头和结尾,但无济于事。

BEGIN    
    IF EXISTS(
        SELECT  *    
        FROM x, y    
        WHERE x.ID = y.ID
)
BEGIN
    INSERT INTO x(ID, sID,cID, n, a)
    VALUES(y.ID, y.sID, y.cID, NULL, NULL)
END
BEGIN
    ELSE
        UPDATE x 
        SET x.sID= y.sID, x.cID= y.cID
    END  
END
;

【问题讨论】:

  • 样本数据和期望的结果将真正阐明您要做什么。

标签: mysql sql if-statement sql-update sql-insert


【解决方案1】:

我认为你想要insert ... on duplicate key 语法:

insert into x(id, sid, cid, n, a)
select y.id, y.sid, y.cid, null, null
from y
on duplicate key update x.sid = y.sid, x.cid = y.cid

此查询尝试在表x 中插入y 中的所有现有行。当满足已经存在的id 时,查询转到on duplicate key 子句,并且updates sidcid 在现有行上。

为此,您需要对 x(id) 设置唯一(或主键)约束。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多