在 SQL 查詢方面,我完全是新手。下面,我包含了一個我一直在處理的腳本,該腳本試圖糾正我們生產資料庫中表中的一些“壞”資料。
我對這張表的最佳解釋是兩個表的關系,如果我沒記錯的話,是多對多的關系。我明白是什么導致了錯誤,但由于我的經驗不足,我真的很難弄清楚如何解決這個問題。
這篇文章末尾的表格是我計劃使用的一小部分資料,但我認為在擴大規模之前最好從小處著手。
BEGIN TRANSACTION Update100KE74Sequence
UPDATE PointWeight
SET Weights_Id = CASE Weights_Id
/* 2K Weights */
WHEN 53 THEN 56
WHEN 54 THEN 55
WHEN 55 THEN 54
WHEN 56 THEN 53
/* 5K Weights */
WHEN 57 THEN 61
WHEN 58 THEN 61
WHEN 59 THEN 60
WHEN 60 THEN 59
WHEN 61 THEN 58
WHEN 62 THEN 57
/* 8K Weights */
WHEN 63 THEN 75
WHEN 65 THEN 72
WHEN 66 THEN 71
WHEN 67 THEN 70
WHEN 68 THEN 69
WHEN 69 THEN 68
WHEN 70 THEN 67
WHEN 71 THEN 66
WHEN 72 THEN 65
WHEN 75 THEN 63
ELSE Weights_Id
END
WHERE PointWeight_Weight_Id > 2087
AND PointWeight_Weight_Id < 2101
AND Weights_Id < 76
AND Weights_Id > 50
ROLLBACK
錯誤:
訊息 2627,級別 14,狀態 1,第 3 行違反 PRIMARY KEY 約束“PK_PointWeight”。無法在物件“dbo.PointWeight”中插入重復鍵。重復的鍵值為 (2099, 61)。
| PointWeight_Weight_Id | 權重_ID |
|---|---|
| 2099 | 51 |
| 2099 | 52 |
| 2099 | 53 |
| 2099 | 54 |
| 2099 | 57 |
| 2099 | 58 |
| 2099 | 59 |
| 2099 | 60 |
| 2099 | 61 |
| 2099 | 62 |
| 2099 | 63 |
| 2099 | 65 |
| 2099 | 66 |
| 2099 | 67 |
| 2099 | 68 |
| 2099 | 69 |
| 2099 | 70 |
| 2099 | 75 |
uj5u.com熱心網友回復:
您將 57 和 58 都分配給 61,即重復鍵。
/* 5K Weights */
WHEN 57 THEN 61
WHEN 58 THEN 61
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/372318.html
上一篇:表中的每一秒值-sql
下一篇:如何為查詢mysql添加臨時值
