我有两个表,它们都有一个列值,但有些表丢失了。我想比较表2,如果表1中存在1,则插入1;如果表1不存在,则插入0。我是一个新手,所以希望能在这方面得到一些帮助。
表1:
custid name lastname acc_exists
123456 eric john
54658 david peter
表2:
custid name order
54658 david kl6545
65282 matt pl5865
SQL:
INSERT INTO t1(acc_exists)
SELECT UPPER(t1.custid)
FROM dbo.customer_accounts T1
LEFT OUTER JOIN dbo.customer_details t2
ON UPPER(t1.custid) = UPPER(t2.custid)
INSERT
语句将行添加到表中。如果需要更新现有行的列值,则需要UPDATE
语句。如果">customer_accounts";表中没有">acc_exists";字段,您需要首先更改表以添加该字段:
ALTER TABLE customer_accounts ADD acc_exists2 INT;
然后,通过左键连接两个表并指定:来更新该字段的值
0
customer_details";表的值为NULL1
,否则
如果您想在联接中忽略区分大小写,您可以使用collate Latin1_General_CI_AS
:在ON
子句中强制转换排序规则
UPDATE customer_accounts
SET acc_exists = CASE WHEN d.custid IS NULL THEN 0 ELSE 1 END
FROM customer_accounts a
LEFT JOIN customer_details d
ON a.custid collate Latin1_General_CI_AS = d.custid collate Latin1_General_CI_AS;
请在此处查看演示。
注意:我假设字段">custid";唯一标识单个客户。