【发布时间】:2014-10-14 20:05:18
【问题描述】:
我知道基本的 SQL,但并不复杂。
我有两个表 [表 1 和表 2],两者都有用户名和成员 ID。表 1 中存在表 2 中不存在的记录。
例如。如果我需要从表 1 中提取所有在表 2 中没有匹配记录的记录,使用用户名作为过滤器,我将编写如下内容:
select * from Table1 a
where not exists (select * from Table2 b
where b.MemberID = a.MemberID) and UserName like 'b%'
这很容易。但是,如何使用不同的用户名更新所有这些结果?
我正在尝试在表 1 中查找表 2 中没有匹配记录的相同用户名的所有记录,然后使用我的用户名 ('r%') 更新这些记录。
我知道有些人会问,你有什么尝试...我尝试将 2 个查询作为单个查询使用,但出现很多错误...例如:
update Table1
set UserName = (select * from Table1 a
where not exists (select * from Table2 b
where b.MemberID = a.MemberID) and UserName = 'r@gmail.com')
感谢任何帮助。
【问题讨论】:
-
您遇到什么错误?也许将 Not Exists 更改为 Not In?
-
不会因为语法不正确而引发错误。 '不存在'的错误是“当不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式。”
标签: sql sql-server-2008 subquery