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

-SQL-update-解决方案

2012-02-02 
----------SQL------update------address-----------------------01四川省02北京市03天津市……------------

----------SQL------update------
address    
-----------------------    
01             四川省    
02             北京市    
03             天津市    
……    
-----------------------    
subject    
-----------------------    
01                     施工员    
02                     预算员    
03                     资料员    
……    
-----------------------    
enter    
-----------------------    
name                   subject     address             examnumber    
王1                     施工员         天津市             030100001    
王2                     预算员         北京市             020200001    
王3                     预算员         北京市             020200002    
王4                     施工员         四川省             020100001    
王5                     施工员         四川省             020100002    
王6                     资料员         天津市             030300001    
王7                     资料员         天津市             030300002    
王8                     预算员         天津市             030200001    
王9                     预算员         天津市             030200002    
王10                   预算员         四川省             020200001
------------------------    
现在表里面的examnumber     全是空的。    
求一条更新语句来实现这个号码的更新    
上面是比较简单的。    
这里是         地址+科目+5位排序号    
这里加入地址以后应该在上面的语句里面怎么修改才可以实现啊。
update   e
set
        examnumber   =a.addressid+s.subjectid+right(100000+(select   count(*)   from   enter   where   address=e.address   and   name <=e.name),5)
from  
        enter   e,gw_subject   s,gw_address   a
where
        e.subject=   s.subject   and   e.address=a.addressname  
这么写出来的数据是有错的。
他是直接按照subject排序的。不能实现先排地区再排科目
想找人帮我修改一下。


------解决方案--------------------


少了一點代碼,加上

update e
set
examnumber =a.addressid+s.subjectid+right(100000+(select count(*) from enter where address=e.address and subject=e.subject and name <=e.name),5)
from
enter e,gw_subject s,gw_address a
where
e.subject= s.subject and e.address=a.addressname

[解决办法]
update e
set
examnumber =a.addressid+s.subjectid+right(100000+(select count(*) from enter where address=e.address and name <=e.name),5)
from
enter e,gw_subject s,gw_address a
where
e.subject= s.subject
[解决办法]
update e
set
examnumber =a.addressid+s.subjectid+right(100000+(select count(*) from enter where address=e.address and subject= e.subject and name <=e.name),5)
from
enter e,gw_subject s,gw_address a
where
e.subject= s.subject and e.address=a.addressname

这样试试

[解决办法]
Update E
Set
E.examnumber = S.id+A.id+Right( '100000 '+(Select Count(*) From @enter Where subject=e.subject
And address=e.address And name <=e.name),5)
From
@enter E
Inner Join
@subject S
On E.subject= S.subject
Inner Join
@address A
On E.address=A.address
---这样就是你上面贴出来的那个结果

热点排行