如果某些值出现在另一个 table 中,则将值插入 table
Insert value into a table if certain values occur in another table
我正在尝试在 SQL 作品中获取一个插入语句,如果特定值出现在 'table 2' 中,它将把 'Yes' 输入到 'table 1' 的列中
例如,如果 'table 2' 有 2 列 'ID' & 'Name' 和值 '1' & 'John Smith' 然后插入 YES 到 'table 1' 其中有一个名为 'exists'
的列
IF EXISTS
(SELECT id, name
FROM database.dbo.table2
WHERE id = '1'
and name = 'John Smith'
)
INSERT INTO database.dbo.table1 (exists)
VALUES ('Yes')
我发现在现有列中插入了一个只有 'Yes' 的新行,在另一个列中插入了空值,但我希望它 link 到 'id' 的行in table 1. 因此,如果在 table1 中有一个 'id' 为 1 的行,它将把它插入到该行中。
我试着给两个 table 一个别名,然后在底部添加一个与 id 匹配的 where 子句,但它给出了错误“关键字 'as' 附近的语法不正确。”在 table1.
之后
我想你想要一个 update
:
UPDATE database.dbo.table1
SET exists = 'Yes'
WHERE EXISTS (SELECT 1
FROM database.dbo.table2 t2
WHERE t2.id = 1 AND -- probably a number, so no quotes
t2.name = 'John Smith' AND
t2.id = t1.id
);
这在 SQL 服务器中通常写为:
UPDATE t1
SET exists = 'Yes'
FROM table1 t1 JOIN
database.dbo.table2 t2
ON t1.id = t2.id
WHERE t2.id = 1 AND t2.name = 'John Smith';
如果您想 INSERT
该行(如果它不存在),您可以使用 MERGE
或查看 UPDATE
是否有效,否则 INSERT
:
UPDATE t1
SET exists = 'Yes'
FROM table1 t1 JOIN
database.dbo.table2 t2
ON t1.id = t2.id
WHERE t2.id = 1 AND t2.name = 'John Smith';
IF @@ROWCOUNT = 0 BEGIN
INSERT INTO table1 (id, exists)
VALUES (1, 'Yes')
END;
我正在尝试在 SQL 作品中获取一个插入语句,如果特定值出现在 'table 2' 中,它将把 'Yes' 输入到 'table 1' 的列中
例如,如果 'table 2' 有 2 列 'ID' & 'Name' 和值 '1' & 'John Smith' 然后插入 YES 到 'table 1' 其中有一个名为 'exists'
的列IF EXISTS
(SELECT id, name
FROM database.dbo.table2
WHERE id = '1'
and name = 'John Smith'
)
INSERT INTO database.dbo.table1 (exists)
VALUES ('Yes')
我发现在现有列中插入了一个只有 'Yes' 的新行,在另一个列中插入了空值,但我希望它 link 到 'id' 的行in table 1. 因此,如果在 table1 中有一个 'id' 为 1 的行,它将把它插入到该行中。
我试着给两个 table 一个别名,然后在底部添加一个与 id 匹配的 where 子句,但它给出了错误“关键字 'as' 附近的语法不正确。”在 table1.
之后我想你想要一个 update
:
UPDATE database.dbo.table1
SET exists = 'Yes'
WHERE EXISTS (SELECT 1
FROM database.dbo.table2 t2
WHERE t2.id = 1 AND -- probably a number, so no quotes
t2.name = 'John Smith' AND
t2.id = t1.id
);
这在 SQL 服务器中通常写为:
UPDATE t1
SET exists = 'Yes'
FROM table1 t1 JOIN
database.dbo.table2 t2
ON t1.id = t2.id
WHERE t2.id = 1 AND t2.name = 'John Smith';
如果您想 INSERT
该行(如果它不存在),您可以使用 MERGE
或查看 UPDATE
是否有效,否则 INSERT
:
UPDATE t1
SET exists = 'Yes'
FROM table1 t1 JOIN
database.dbo.table2 t2
ON t1.id = t2.id
WHERE t2.id = 1 AND t2.name = 'John Smith';
IF @@ROWCOUNT = 0 BEGIN
INSERT INTO table1 (id, exists)
VALUES (1, 'Yes')
END;