我有一个查询,我试图从表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.idWHERE 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