22,207
社区成员
发帖
与我相关
我的任务
分享
--------------------------------------------------------------------------
-- Author : htl258(Tony)
-- Date : 2010-04-07 15:00:56
-- Version:Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (Intel X86)
-- Mar 29 2009 10:27:29
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)
--------------------------------------------------------------------------
--> 生成测试数据表:tb
IF NOT OBJECT_ID('[tb]') IS NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb]([id] INT,[name] NVARCHAR(10),[pid] NVARCHAR(10),[class] NVARCHAR(10))
INSERT [tb]
SELECT 262152,'1',NULL,NULL UNION ALL
SELECT 262153,NULL,'2',NULL UNION ALL
SELECT 262154,'3',NULL,NULL UNION ALL
SELECT 262155,NULL,'4',NULL UNION ALL
SELECT 262156,'5',NULL,NULL UNION ALL
SELECT 262157,NULL,'6',NULL UNION ALL
SELECT 262158,'7',NULL,NULL UNION ALL
SELECT 262159,NULL,'8',NULL UNION ALL
SELECT 262160,NULL,NULL,'9' UNION ALL
SELECT 262161,'10',NULL,NULL UNION ALL
SELECT 262162,NULL,NULL,'11' UNION ALL
SELECT 262163,NULL,'12',NULL UNION ALL
SELECT 262164,NULL,NULL,'13'
GO
--SELECT * FROM [tb]
-->SQL查询如下:
update tb set name=ISNULL(name,isnull(pid,'')+ISNULL([class],''))
select * from tb
/*
id name pid class
----------- ---------- ---------- ----------
262152 1 NULL NULL
262153 2 2 NULL
262154 3 NULL NULL
262155 4 4 NULL
262156 5 NULL NULL
262157 6 6 NULL
262158 7 NULL NULL
262159 8 8 NULL
262160 9 NULL 9
262161 10 NULL NULL
262162 11 NULL 11
262163 12 12 NULL
262164 13 NULL 13
(13 行受影响)
*/
----------------------------------------------------------------
-- Author :fredrickhu(小F,向高手学习)
-- Date :2010-04-07 14:58:01
-- Verstion:
-- Microsoft SQL Server 2005 - 9.00.4053.00 (Intel X86)
-- May 26 2009 14:24:20
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([id] int,[name] int,[pid] int,[class] int)
insert [tb]
select 262152,1,null,null union all
select 262153,null,2,null union all
select 262154,3,null,null union all
select 262155,null,4,null union all
select 262156,5,null,null union all
select 262157,null,6,null union all
select 262158,7,null,null union all
select 262159,null,8,null union all
select 262160,null,null,9 union all
select 262161,10,null,null union all
select 262162,null,null,11 union all
select 262163,null,12,null union all
select 262164,null,null,13
--------------开始查询--------------------------
update
a
set
name=b.id0
from
tb a,
(select *,id0=row_number()over(order by id) from tb)b
where
a.id=b.id
select * from tb
----------------结果----------------------------
/* id name pid class
----------- ----------- ----------- -----------
262152 1 NULL NULL
262153 2 2 NULL
262154 3 NULL NULL
262155 4 4 NULL
262156 5 NULL NULL
262157 6 6 NULL
262158 7 NULL NULL
262159 8 8 NULL
262160 9 NULL 9
262161 10 NULL NULL
262162 11 NULL 11
262163 12 12 NULL
262164 13 NULL 13
(13 行受影响)
*/
update steel_cs
set name = isnull(pid,class)
where name is null
update tb
set name=isnull(pid,class)
where name is null