您的位置:首页 > 数据库 > MySQL

MS sql server和mysql中update多条数据的例子

2008-12-05 12:00 495 查看
1.

MS sql server中使用动态的表名:declare @tableName nvarchar(160)

set @tableName = 't_stat_all'

declare @sql nvarchar(160)

print @tableName

set @sql='select count(*) from '+@tableName

exec(@sql)

2.mysql的例子1

语句update (select sc,tos,sum(click) as click,product,adpid from log_sc_click group by sc,tos,product,adpid) as a,

t_stat_sc_h_tmp as b

set b.sc_click=a.click

where b.stat_date=str_date and b.hour=str_hour and b.sc=a.sc

and b.tos=a.tos and b.product=a.product and a.adpid=b.adpid;

3.mysql例子2

update t_advertiser as a,

(select uid,sum(amount) as amount from t_trade where status='1' and type='4' group by uid)as b

set a.spend=(b.amount) ,a.balance=(a.totalAmount-b.amount) #注意是逗号不是and

where a.id=b.uid;

4.

SQL server存储过程完整例子

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go

--ALTER procedure [dbo].[ad_stat]

ALTER procedure [dbo].[ad_stat]

@day varchar(20) = null

as

BEGIN try

if(@day is null)

set @day = convert(varchar(10),dateadd(day,-1,getdate()),121)

declare @theDay datetime

set @theDay = cast(@day as datetime)

declare @yesterday varchar(10)

set @yesterday = convert(varchar(10),@theDay,121)

declare @tableName nvarchar(160)

set @tableName = 'log_adlist_'+ left(@yesterday,4)+'_'+substring(@yesterday,6,2)+'_'+substring(@yesterday,9,2)

declare @sql nvarchar(500)

set @sql=' update t_stat_all '+

' set cl=b.click from '+

' ( '+

' select AllType as ad_id ,posid as posid,count(*) as click '+

' from '+@tableName+

' where datediff(d,VisitTime,'+@theDay+')=0'+

' group by AllType,posid '+

' ) b ,t_stat_all a '+

' where datediff(d,a.stat_date,'+@theDay+')=0 and a.posid=b.posid '+

' and a.ad_id=b.ad_id ';

exec(@sql)

END try

begin catch

INSERT INTO actionLogs

([createTime]

,[actionName]

,[type]

,[infor])

VALUES

(getdate(),

'ad_stat',

'error', --error,info

ERROR_MESSAGE())

end catch
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: