Sql 根据表之间匹配的值插入/更新标志
我想制定一个程序,其中: 如果表B中存在ID,但表A中不存在ID,则代码将插入/更新为0。 否则,如果ID同时存在于两个表中,则“代码”字段将被插入/更新为1。 我有两张桌子,例如:Sql 根据表之间匹配的值插入/更新标志,sql,oracle,Sql,Oracle,我想制定一个程序,其中: 如果表B中存在ID,但表A中不存在ID,则代码将插入/更新为0。 否则,如果ID同时存在于两个表中,则“代码”字段将被插入/更新为1。 我有两张桌子,例如: Table A Table B +----+--+--+----+------+ | ID | | | Id | Code | +----+--+--+----+------+ | 1 | | | 1 | 0 | | 2 | | | 2 | 0 | | 3 | | |
Table A Table B
+----+--+--+----+------+
| ID | | | Id | Code |
+----+--+--+----+------+
| 1 | | | 1 | 0 |
| 2 | | | 2 | 0 |
| 3 | | | 3 | 0 |
| 4 | | | 4 | 0 |
| | | | 5 | 0 |
| | | | 6 | 0 |
+----+--+--+----+------+
你能帮我吗
最后的表B应该是这样的:
+----+------+
| Id | Code |
+----+------+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 1 |
| 5 | 0 |
| 6 | 0 |
+----+------+
如下所示:使左连接生成表B的值(表A中不存在),然后合并以更新列代码 您可以使用:
请在下面找到您的问题的答案
create table TABLEA (ID int);
insert into TABLEA (ID) values (1);
insert into TABLEA (ID) values (2);
insert into TABLEA (ID) values (3);
insert into TABLEA (ID) values (4);
insert into TABLEA (ID) values (5);
create table TABLEB (ID int, code int);
insert into TABLEB (ID,code) values (1,0);
insert into TABLEB (ID,code) values (2,0);
insert into TABLEB (ID,code) values (3,0);
insert into TABLEB (ID,code) values (4,0);
insert into TABLEB (ID,code) values (5,0);
insert into TABLEB (ID,code) values (6,0);
insert into TABLEB (ID,code) values (7,0);
insert into TABLEB (ID,code) values (8,0);
UPDATE TABLEB SET CODE=1 FROM TABLEB B INNER JOIN TABLEA as A on A.id=B.id;
SELECT * FROM TABLEB;
ID CODE
1 1
2 1
3 1
4 1
5 1
6 0
7 0
8 0
到目前为止你得到了什么?你是什么意思罗伯特?请不要要求我们为你写代码。首先,真诚地尝试自己解决问题。询问现有实施中的具体问题。堆栈溢出不是代码编写服务。你真是太好了,罗伯特!我有一个问题要解决,并没有要求你们编写正确的代码,我只是问我如何解决我的问题,你们可以说->使用合并。但不管怎样,这很重要。幸运的是,并不是所有的人都像你那么粗鲁。我不是有意粗鲁的。我为您提供了一个如何提问的链接。遵循这些规则会给你更好的答案。”“合并”是您问题的一个可能答案。答案还有很多,甚至可能更好。你的问题太广泛了。此外,描述你已经尝试过的东西和任何研究的结果也是一种很好的做法。
MERGE into tableB B
USING tableA A
ON (a.id = b.id)
WHEN MATCHED THEN
UPDATE SET code = 1
WHEN NOT MATCHED THEN
INSERT (id,code) values (a.id, 0)
create table TABLEA (ID int);
insert into TABLEA (ID) values (1);
insert into TABLEA (ID) values (2);
insert into TABLEA (ID) values (3);
insert into TABLEA (ID) values (4);
insert into TABLEA (ID) values (5);
create table TABLEB (ID int, code int);
insert into TABLEB (ID,code) values (1,0);
insert into TABLEB (ID,code) values (2,0);
insert into TABLEB (ID,code) values (3,0);
insert into TABLEB (ID,code) values (4,0);
insert into TABLEB (ID,code) values (5,0);
insert into TABLEB (ID,code) values (6,0);
insert into TABLEB (ID,code) values (7,0);
insert into TABLEB (ID,code) values (8,0);
UPDATE TABLEB SET CODE=1 FROM TABLEB B INNER JOIN TABLEA as A on A.id=B.id;
SELECT * FROM TABLEB;
ID CODE
1 1
2 1
3 1
4 1
5 1
6 0
7 0
8 0