自联表的数据更新问题

hyl8218 2008-09-23 09:46:00
数据:
Email ListId Name Status FormatType PlanId BatchFlag
-------------------------------------------------------------------------------------------------------------------------------- ----------- -------- ------ ---------- ----------- ---------
34541588@qq.com 2 姓名 1 0 0 0
34541588@qq.com 7 姓名 1 0 0 0
34541588@qq.com 8 姓名 1 1 0 0
34541588@qq.com 9 姓名 1 0 0 0
google@gmail.com 2 0 1 1 0
google@gmail.com 7 0 1 1 0
google@gmail.com 8 0 1 1 0


语句如下
UPDATE [Subscribes]
SET [Status] = [OldSubscribes].[Status]
,[FormatType] = [OldSubscribes].[FormatType]
,[PlanId] = [OldSubscribes].[PlanId]
,[BatchFlag] = [OldSubscribes].[BatchFlag]
FROM [Subscribes] AS [OldSubscribes]
WHERE [OldSubscribes].[Email]='34541588@qq.com' AND [Subscribes].[Email]='google@gmail.com'
AND [OldSubscribes].[ListId]=[Subscribes].[ListId]

错误:
消息 4104,级别 16,状态 1,第 1 行
无法绑定由多个部分组成的标识符 "Subscribes.Email"。
消息 4104,级别 16,状态 1,第 1 行
无法绑定由多个部分组成的标识符 "Subscribes.ListId"。
...全文
110 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyl8218 2008-09-23
  • 打赏
  • 举报
回复
期望的结果是
数据:
Email ListId Name Status FormatType PlanId BatchFlag
-------------------------------------------------------------------------------------------------------------------------------- ----------- -------- ------ ---------- ----------- ---------
34541588@qq.com 2 姓名 1 0 0 0
34541588@qq.com 7 姓名 1 0 0 0
34541588@qq.com 8 姓名 1 1 0 0
34541588@qq.com 9 姓名 1 0 0 0
google@gmail.com 2 1 0 0 0
google@gmail.com 7 1 0 0 0
google@gmail.com 8 1 1 0 0
terrybogero 2008-09-23
  • 打赏
  • 举报
回复
UPDATE t1
SET [Status] = t2.[Status]
,[FormatType] = t2.[FormatType]
,[PlanId] = t2.PlanId]
,[BatchFlag] = t2.[BatchFlag]
FROM [Subscribes] t1 inner join [Subscribes] t2 on t1.[ListId]=t2.[ListId]
WHERE t2.[Email]='34541588@qq.com' AND t1.[Email]='google@gmail.com'
中国风 2008-09-23
  • 打赏
  • 举报
回复
use tempdb
go
--> -->

if not object_id('Subscribes') is null
drop table Subscribes
Go
Create table Subscribes([Email] nvarchar(16),[ListId] int,[Name] nvarchar(2),[Status] int,[FormatType] int,[PlanId] int,[BatchFlag] int)
Insert Subscribes
select N'34541588@qq.com',2,N'姓名',1,0,0,0 union all
select N'34541588@qq.com',7,N'姓名',1,0,0,0 union all
select N'34541588@qq.com',8,N'姓名',1,1,0,0 union all
select N'34541588@qq.com',9,N'姓名',1,0,0,0 union all
select N'google@gmail.com',2,N'0',1,1,0,null union all
select N'google@gmail.com',7,N'0',1,1,0,null union all
select N'google@gmail.com',8,N'0',1,1,0,null
Go
update b
SET [Status] = a.[Status]
,[FormatType] = a.[FormatType]
,[PlanId] = a.[PlanId]
,[BatchFlag] = a.[BatchFlag]
from
[Subscribes] a
join
[Subscribes] b on a.[Email]='34541588@qq.com' AND b.[Email]='google@gmail.com'AND a.[ListId]=b.[ListId]
go
Select * from Subscribes


Email ListId Name Status FormatType PlanId BatchFlag
---------------- ----------- ---- ----------- ----------- ----------- -----------
34541588@qq.com 2 姓名 1 0 0 0
34541588@qq.com 7 姓名 1 0 0 0
34541588@qq.com 8 姓名 1 1 0 0
34541588@qq.com 9 姓名 1 0 0 0
google@gmail.com 2 0 1 0 0 0
google@gmail.com 7 0 1 0 0 0
google@gmail.com 8 0 1 1 0 0

(7 個資料列受到影響)

中国风 2008-09-23
  • 打赏
  • 举报
回复
update b
SET [Status] = a.[Status]
,[FormatType] = a.[FormatType]
,[PlanId] = a.[PlanId]
,[BatchFlag] = a.[BatchFlag]
from
[Subscribes] a
join
[Subscribes] b on a.[Email]='34541588@qq.com' AND b.[Email]='google@gmail.com'AND a.[ListId]=b.[ListId]
dawugui 2008-09-23
  • 打赏
  • 举报
回复
看你的意思是想改这六条数据中的某些值?

Email ListId Name Status FormatType PlanId BatchFlag
34541588@qq.com 2 姓名 1 0 0 0
34541588@qq.com 7 姓名 1 0 0 0
34541588@qq.com 8 姓名 1 1 0 0
google@gmail.com 2 0 1 1 0
google@gmail.com 7 0 1 1 0
google@gmail.com 8 0 1 1 0

hyde100 2008-09-23
  • 打赏
  • 举报
回复
这个试试


UPDATE [Subscribes]
SET [Status] = [OldSubscribes].[Status]
,[FormatType] = [OldSubscribes].[FormatType]
,[PlanId] = [OldSubscribes].[PlanId]
,[BatchFlag] = [OldSubscribes].[BatchFlag]
FROM [Subscribes]
INNER JOIN [Subscribes] [OldSubscribes] ON 条件...
WHERE [OldSubscribes].[Email]='34541588@qq.com' AND [Subscribes].[Email]='google@gmail.com'
AND [OldSubscribes].[ListId]=[Subscribes].[ListId]
dawugui 2008-09-23
  • 打赏
  • 举报
回复
针对你的数据,你需要什么结果,把结果贴出来,最好说明一下你的要求.

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧