首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

高分求一更新语句!很多客户都在投诉,搞不定就惨了!该如何处理

2012-01-19 
高分求一更新语句!!!很多客户都在投诉,搞不定就惨了!现有用户表字段user_id,user_name,lastenterdate贴子

高分求一更新语句!!!很多客户都在投诉,搞不定就惨了!
现有用户表
字段user_id,user_name,lastenterdate
贴子表
贴子ID,贴子主题,贴子内容,发贴人ID,发贴日期

更新用户表的lastenterdate为在贴子表中该用户的最后发贴日期,如果没有则不更新.

因为贴子表记录很多,要求更新语句效率高!!

急!!!!!!!!

[解决办法]
update 现有用户表
set lastenterdate = b.发贴日期
from 现有用户表 a inner join (select 发贴人ID,max(发贴日期) from 贴子表) b on a.user_id=b.贴人ID
[解决办法]
up
[解决办法]
update a
set a.lastenterdate=b.发贴日期
from 用户表 a,(select 发贴人ID,max(发贴日期) from 贴子表 group by 发贴人ID)b
where a.user_id=b.发贴人ID
[解决办法]
Update A Set A.lastenterdate=B.发贴日期
From A, (Select 发贴人ID, Max(发贴日期) From 贴子表 Group By 发贴人ID) As B
Where A.user_id=B.发贴人ID
[解决办法]
update a
set lastenterdate=b.发贴日期
from 用户表 a inner join 贴子表 b
on a.user_id=b.发贴人ID and
not exists (
select 1 from 贴子表
where 发贴人ID=b.发贴人ID and
发贴日期> b.发贴日期
)

[解决办法]
update a set lastenterdate=(select max(发帖日期) from board where 发帖人id=a.id ) from [user] a
[解决办法]
Update
A
Set
lastenterdate = B.发贴日期
From
用户表 A,
(Select 发贴人ID, Max(发贴日期) As 发贴日期 From 贴子表 Group By 发贴人ID) B
Where
A.user_id = B.发贴人ID
[解决办法]
樓主可以寫一個觸發器實時更新用户表。

通常情況下,一個用戶不會同時發表多個帖子,可以直接這麼寫。

Create Trigger TR_Updatelastenterdate On 贴子表
For Insert
As
Update
A
Set
lastenterdate = B.发贴日期
From
用户表 A,
Inserted B
Where
A.user_id = B.发贴人ID
GO
[解决办法]
考慮進 "一個用戶同時發表多個帖子 "這種情況,觸發器可以如下寫

Create Trigger TR_Updatelastenterdate On 贴子表
For Insert
As
Update
A
Set
lastenterdate = B.发贴日期
From
用户表 A,
(Select 发贴人ID, Max(发贴日期) As 发贴日期 From Inserted Group By 发贴人ID) B
Where
A.user_id = B.发贴人ID
GO
[解决办法]
update 用户表
set lastenterdate=a.发贴日期
from 用户表 join 贴子表 as a on 用户表.user_id=a.发贴人ID
where not exists(select 1 from 贴子表 where 发贴人ID=a.发贴人ID and 发贴日期> a.发贴日期 )

热点排行