MySQL使用右连接进行更新



我有一个查询,我试图从表y中添加行到表x,其中y中的id字段不在表x中。我试图使用右连接来做到这一点:

UPDATE table_x x
RIGHT JOIN
table_y y
ON y.id = x.id
SET 
y.id = x.id,
y.col1 = x.col1,
y.col2 = x.col2,
y.col3 = x.col3
WHERE y.id IS NULL

这是一个SELECT语句,但由于某种原因UPDATE不能工作。有人知道这是为什么吗?

如果你想在表x中插入行,你可能需要一个Insert语句而不是UPDATE语句-

INSERT INTO table_x (id, col1, col2, col3)
SELECT y.id, y.col1, y.col2, y.col3
FROM table_x x
RIGHT JOIN table_y y ON y.id = x.id
WHERE y.id IS NULL

Ankit的答案是正确的,除了WHERE子句。您希望在table_x缺少数据时插入table_x,而不是Ankit SQL中暗示的table_y。因此,在WHERE:

中应该使用x.id而不是y.id
WHERE x.id IS NULL

如果table_y中有数据而table_x中没有数据,则插入到table_x中。

为了清晰起见,完整的语法应该是:
INSERT INTO table_x (id, col1, col2, col3)
SELECT y.id, y.col1, y.col2, y.col3
FROM table_x x
RIGHT JOIN table_y y ON y.id = x.id
WHERE x.id IS NULL

相关内容

  • 没有找到相关文章

最新更新