控制号 条形码 分配地址
1 123456
1 123457
1 156487
2 352548
2 212336
2 254848
2 547854 现在想把控制号一样的最小的那个条形码的分配地址改为'样本'
请问怎么改呀
1 123456
1 123457
1 156487
2 352548
2 212336
2 254848
2 547854 现在想把控制号一样的最小的那个条形码的分配地址改为'样本'
请问怎么改呀
tb
set
分配地址='样本'
from
tb t
where
条形码=(select min(条形码) from tb where 控制号=t.控制号)
-- Author :fredrickhu(我是小F,向高手学习)
-- Date :2009-11-30 09:30:28
-- Version:
-- Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)
-- Nov 24 2008 13:01:59
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([控制号] int,[条形码] int,[分配地址] sql_variant)
insert [tb]
select 1,123456,null union all
select 1,123457,null union all
select 1,156487,null union all
select 2,352548,null union all
select 2,212336,null union all
select 2,254848,null union all
select 2,547854,null
--------------开始查询--------------------------
update
tb
set
分配地址='样本'
from
tb t
where
条形码=(select min(条形码) from tb where 控制号=t.控制号)
select * from [tb]
----------------结果----------------------------
/* 控制号 条形码 分配地址
----------- ----------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 123456 样本
1 123457 NULL
1 156487 NULL
2 352548 NULL
2 212336 样本
2 254848 NULL
2 547854 NULL(7 行受影响)*/
declare @tb table (控制号 int,条形码 int,分配地址 varchar(10))
insert into @tb
select 1,123456,null union all
select 1,123457,null union all
select 1,156487,null union all
select 2,352548,null union all
select 2,212336,null union all
select 2,254848,null union all
select 2,547854,nullupdate @tb
set 分配地址= case when 条形码=(select min(条形码) from @tb where 控制号=t.控制号) then '样本' else null end
from @tb tselect * from @tb控制号 条形码 分配地址
----------- ----------- ----------
1 123456 样本
1 123457 NULL
1 156487 NULL
2 352548 NULL
2 212336 样本
2 254848 NULL
2 547854 NULL(7 行受影响)
--> Author :
--> Date : 2009-11-30 09:30:14
if object_id('[tb]') is not null drop table [tb]
go
create table [tb] (控制号 int,条形码 int,分配地址 nvarchar(10))
insert into [tb]
select 1,123456,null union all
select 1,123457,null union all
select 1,156487,null union all
select 2,352548,null union all
select 2,212336,null union all
select 2,254848,null union all
select 2,547854,null
update t set 分配地址=N'樣本'
from tb t
where not exists(select 1 from tb where 控制号=t.控制号 and 条形码<t.条形码)
select * from tb
/*
控制号 条形码 分配地址
----------- ----------- ----------
1 123456 樣本
1 123457 NULL
1 156487 NULL
2 352548 NULL
2 212336 樣本
2 254848 NULL
2 547854 NULL(7 個資料列受到影響)
*/
--> Author : 各位大大,小女子只想要顆星星
--> Date : 2009-11-30 09:44:12
if object_id('[tb]') is not null drop table [tb]
go
create table [tb] (控制号 int,条形码 int,分配地址 sql_variant)
insert into [tb]
select 1,123456,null union all
select 1,123457,null union all
select 1,156487,null union all
select 2,352548,null union all
select 2,212336,null union all
select 2,254848,null union all
select 2,547854,null
update t set 分配地址=N'樣本'
from tb t
where not exists(select 1 from tb where 控制号=t.控制号 and 条形码<t.条形码)
select * from tb
/*
控制号 条形码 分配地址
----------- ----------- ----------
1 123456 樣本
1 123457 NULL
1 156487 NULL
2 352548 NULL
2 212336 樣本
2 254848 NULL
2 547854 NULL(7 個資料列受到影響)
*/