所以,我试图检查,如果一个表条目等于另一个表条目,如果它是更新的表,如果它不是把一个新的条目在
我在if exists处得到错误信息。我试着移动开头和结尾,但没有用。
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
;
我想你想要的是 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
这个查询试图插入所有现有的记录在 y
表中 x
. 当一个已经存在的 id
满足,查询转到 on duplicate key
条款,以及 update
s sid
和 cid
上的现有行。
为了达到这个目的,我们需要在以下数据上设置一个唯一的(或主键)约束 x(id)
.