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

sql一语句写法

2012-02-11 
求助sql一语句写法有表a字段有dmmcchildnumtype01名称a0101mia0102a010101 kka以下多行这个怎么用sql语句

求助 sql一语句写法
有表a 字段有 
dm mc childnum type
01 名称 a
0101 mi a
0102 a
010101 kk a
以下多行


这个怎么用sql语句把childnum 赋值 比如01的childnum=2 0101的是1 0102的是0

用一个语句把这张表每一行childnum都赋值

[解决办法]

SQL code
create table tb(dm varchar(10),mc varchar(10),childnum int,type varchar(10))insert into tb select '01','名称',null,'a'insert into tb select '0101','mi',null,'a'insert into tb select '0102',null,null,'a'insert into tb select '010101','kk',null,'a'goupdate t set childnum=(select COUNT(*) from tb where LEFT(dm,LEN(t.dm))=t.dm and LEN(dm)=LEN(t.dm)+2) from tb tselect * from tb/*dm         mc         childnum    type---------- ---------- ----------- ----------01         名称         2           a0101       mi         1           a0102       NULL       0           a010101     kk         0           a(4 行受影响)*/godrop table tb
[解决办法]
SQL code
use Tempdbgo--> -->  declare @T table([dm] nvarchar(10),[mc] nvarchar(10),[childnum] INT,[type] nvarchar(10))Insert @T([dm],[mc],[type])select N'01',N'名称',N'a' union allselect N'0101',N'mi',N'a' union allselect N'0102',N'',N'a' union allselect N'010101',N'kk',N'a' UPDATE tSET [childnum]=(SELECT COUNT(1) FROM @T WHERE [type]=t.[type] AND [dm] LIKE t.[dm]+'__')from @T AS tSELECT * FROM @T/*dm    mc    childnum    type01    名称    2    a0101    mi    1    a0102        0    a010101    kk    0    a*/
[解决办法]
SQL code
declare @t table (dm varchar(6),mc varchar(4),childnum int,type varchar(1))insert into @tselect '01','名称',NULL,'a' union allselect '0101','mi',NULL,'a' union allselect '0102',null,NULL,'a' union allselect '010101','kk',NULL,'a'UPDATE  @tSET     childnum = ( SELECT COUNT(1)                     FROM   @t                     WHERE  a.dm = LEFT(dm, LEN(dm) - 2)                   )FROM    @t a SELECT * FROM @T/*dm     mc   childnum    type------ ---- ----------- ----01     名称   2           a0101   mi   1           a0102   NULL 0           a010101 kk   0           a*/ 

热点排行