【问题标题】:T-SQL query to remove non matching value from ColumnA where value doesn't exist in ColumnBT-SQL 查询从 ColumnA 中删除不匹配的值,其中 ColumnB 中不存在值
【发布时间】:2010-09-28 16:45:30
【问题描述】:
我有两个数据库,有以下表格:
数据库A
表A
A 列 (varChar(10)
数据库B
表B
ColumnB (varChar(10)
我需要一个查询:
- 忽略 NULL 或空字符串
- 查找列 B 中不存在 ColumnA 值的行
- 在这种情况下,将 ColumnA 中不匹配行的值替换为 ''(空字符串)
这是在 MS SQL Server 2008 环境中。
【问题讨论】:
标签:
sql
sql-server
tsql
sql-server-2008
【解决方案1】:
您可以使用LEFT OUTER JOIN 执行此操作,如下所示:
UPDATE TableA
SET columnA = ''
FROM
TableA
LEFT JOIN TableB ON TableA.columnA = TableB.columnB
WHERE
TableA.columnA IS NOT NULL AND TableA.columnA <> '' AND
TableB.columnB IS NULL;
【解决方案2】:
UPDATE TableA
SET ColumnA = ''
WHERE ColumnA IS NOT NULL
AND ColumnA <> ''
AND NOT EXISTS
(
SELECT *
FROM TableB WHERE TableB.ColumnB = TableA.ColumnA
)