Oracle SQL:比对两表数据并为Valid列设置Yes/No值
解决方案
场景1:Excel/Google Sheets
在Valid列的第一个数据单元格(假设表头行是第1行,目标单元格为C2)输入以下公式,下拉填充即可:
=IF(B2="","",IF(COUNTIF(A:A,B2)>0,"Yes","No"))
也可以用MATCH函数实现相同效果:
=IF(B2="","",IF(ISNUMBER(MATCH(B2,A:A,0)),"Yes","No"))
逻辑说明:先判断Concat2列是否为空,空值则让Valid列保持空白;若不为空,检查该值是否在CONCAT1列存在,存在填Yes,否则填No。
场景2:SQL数据库
根据不同数据库类型,使用对应的语句更新Valid列:
MySQL/MariaDB
UPDATE Table2 t2 LEFT JOIN Table1 t1 ON t2.Concat2 = t1.CONCAT1 SET t2.Valid = CASE WHEN t2.Concat2 IS NULL THEN NULL WHEN t1.CONCAT1 IS NOT NULL THEN 'Yes' ELSE 'No' END;
SQL Server
UPDATE t2 SET Valid = CASE WHEN t2.Concat2 IS NULL THEN NULL WHEN EXISTS(SELECT 1 FROM Table1 t1 WHERE t1.CONCAT1 = t2.Concat2) THEN 'Yes' ELSE 'No' END FROM Table2 t2;
逻辑说明:通过判断Concat2的值是否在Table1的CONCAT1列中存在,用CASE分支赋值Yes/No,空值则让Valid列保持空白。
内容的提问来源于stack exchange,提问作者Lazy Alex
相关产品推荐
相关产品推荐

