如何更新sql 2005中重复字段中的1个项目

时间:2013-12-28 04:35:06

标签: sql-server sql-server-2005

有一个重复的字段,我只需要更新一行如何使用sql 2005进行此操作?

我的数据库如下所示:

+----------------+-------+-------------+------------------+---------------+
| Transaction_no | User  |  Check-In   |    Check-Out     |    barcode    |
+----------------+-------+-------------+------------------+---------------+
| 01-2013        | User1 |  --/--/--   | 12/28/2013 11:10 | APH009300L030 |
| 01-2013        | User1 |  --/--/--   | 12/28/2013 11:10 | APH009300L030 |
| 01-2013        | User1 |  --/--/--   | 12/28/2013 11:10 | APH009300L030 |
| 01-2013        | User1 |  --/--/--   | 12/28/2013 11:10 | APH009300L030 |
+----------------+-------+-------------+------------------+---------------+

3 个答案:

答案 0 :(得分:0)

尝试这样

;WITH NumberedTbl AS 
 (
  SELECT ROW_NUMBER() OVER (
    PARTITION User,Check-In,Check-Out,barcode,Transaction_no
    ORDER BY User,Check-In,Check-Out,barcode,Transaction_no
  ) AS RowNumber,
  User,Check-In,Check-Out,barcode,Transaction_no
  FROM tbl
)

UPDATE T
SET Check-In= GETDATE()
FROM NumberedTbl T
WHERE T.RowNumber = 1

SELECT * FROM tbl

Please see Demo here

Source

答案 1 :(得分:0)

您的表格中需要的是主键列。您只需添加一个标识字段即可。然后,您将能够轻松编写所需的查询。

答案 2 :(得分:0)

诸如row_number,rank,dense_rank之类的ranking函数不会工作,因为所有字段值都相同,并且在partitioninh之后的任何列上应用ORDER BY将为所有行生成相同的排名。

而是添加另一列habing唯一值,例如Identity column qfter,您可以在ORDER By子句中使用此columm。