日期:2014-05-18  浏览次数:20693 次

【高手进】如何UPDATE两条完全相同的记录?
现在有2条完全相同的记录,但是我只想UPDATE其中的一条。
不想删除数据。
请高手解答
谢谢

------解决方案--------------------
SQL code
;WITH Liang AS 
(
    SELECT * ,rowid=ROW_NUMBER() OVER(PARTITION BY xx ORDER BY id)
    FROM tb
)
UPDATE Liang SET
    xx = xx
WHERE rowid = 1;

------解决方案--------------------
SQL code
UPDATE TOP(1) tb SET
   xx=xx
WHERE xx=xxx

------解决方案--------------------
SQL code
--借助一个子增列
alter table tb add id int identity(1,1)
go
--更新需要更新的那个
update tb set col=.... where id=..
go
--去掉该子增列
alter table tb drop column id

------解决方案--------------------
SQL code
DECLARE @T TABLE(
COL1 VARCHAR(10)
)
INSERT INTO @T
SELECT 'A' UNION ALL
SELECT 'A'
UPDATE TOP(1) @T SET COL1='B' WHERE COL1='A'
SELECT * FROM @T

/*
B
A
*/

------解决方案--------------------
SQL code


create table test_top(id int, name varchar(10))
insert into test_top
select '1','aa' union all
select '1','aa'
1种
set rowcount 1
update test_top set name='tt'
set rowcount 0

2种
;with ttttt as 
(
    select * , row = row_number() over (order by id ) from test_top
)
update ttttt set name='x' where row =1

------解决方案--------------------
SQL code
-- =========================================
-- -----------t_mac 小编-------------
   ---希望有天成为大虾---- 
-- =========================================

IF OBJECT_ID('tb') IS NOT NULL
  DROP TABLE tb
GO
CREATE TABLE tb(a int,b int)
go
insert into tb
select 1,2 union all
select 1,2 
go
set rowcount 1
update tb 
set a=3,b=5
where a=1 and b=2
set rowcount 0
select  * from tb

/*------------
a           b
----------- -----------
3           5
1           2

-------*/

------解决方案--------------------
你用的是SQL Server 2000吧?

那么
SQL code
 row_number、 update top (1)

------解决方案--------------------
SQL> select *
2 from t
3 ;

A B
---------- -----
1 a
1 a
2 c


SQL> update t
2 set b='b'
3 where rowid=(select min(rowid) from t where a=1 and b='a')
4 ;

已更新 1 行。

SQL> select *
2 from t
3 ;

A B
---------- -----
1 b
1 a
2 c
------解决方案--------------------
SQL code
--2005方法 
-- =========================================
-- -----------t_mac 小编-------------
   ---希望有天成为大虾---- 
-- =========================================

IF OBJECT_ID('tb') IS NOT NULL
  DROP TABLE tb
GO
CREATE TABLE tb(a int,b int)
go
insert into tb
select 1,2 union all
select 1,2 
go

update top(1) tb 
set a=3,b=5
where a=1 and b=2
select * from tb 

(1 行受影响)
a           b
----------- -----------
3           5
1           2
--2000方法
-- =========================================
-- -----------t_mac 小编-------------
   ---希望有天成为大虾---- 
-- =========================================

IF OBJECT_ID('tb') IS NOT NULL
  DROP TABLE tb
GO
CREATE TABLE tb(a int,b int)
go
insert into tb
select 1,2 union all
select 1,2 
go
set rowcount 1
update tb 
set a=3,b=5
where a=1 and b=2
set rowcount 0
select  * from tb

/*------------
a           b
----------- -----------
3           5
1           2

-------*/

------解决方案--------------------
SQL code