2013-03-15 115 views
0

希望有人能幫助...更新所選表中的記錄

我有一個包含魚類捕獲和記錄每個垂釣者的個人最好成績兩個表。我現在所做的是在越來越多的清單中添加更多的物種。

所以我現在備份了舊的數據庫(catches_old)並創建了一個新表(catches)。

捕獲將所有物種設置爲零。

拉唯一記錄的唯一方法是一起使用FishName和Angler。

我需要的是一段簡單的代碼來檢查重量是否大於零,這意味着它有一條記錄,然後我會用舊的細節更新記錄。

我試過了很多方法,但是失敗了。

Table Old(Specie,FishNm,Position,Fisherman,lb,oz,dr,Drams,PegName,Date) 表新是相同的。

Table Old contains - 捕獲的舊記錄。 表新基本上是一個重置的所有記錄與其他魚名稱捕捉。

表新包含所有的魚名稱並重置爲0德拉姆。

表老現在需要用過去捕獲的捕獲記錄來更新表新。仍舊沒有被捕捉到的捕獲物不需要轉移,只需要捕獲舊捕獲物。

樣本數據 - (不準確德拉姆計算笑)

Carp - Wobbles - 2 - David Williams - 12 - 4 - 6 - 897 - Willow Island - 21/05/1999 
Carp - Fanta - 1 - David Williams - 14 - 7 - 9 - 900 - Bay of Dreams - 14/05/2004 
Goldfish - Harry - 1 - Fred Ball - 1 - 1- 2 - 258 - Willow Island - 12/05/2010 
Goldfish - Whipper - 2 - - 0 - 0- 0- 0- - 
Goldfish - Harriet - 3 - David Williams - 0 - 15 - 2 - 251 - The Fair - 23/09/2012 

新代碼 - 使用內部連接了兩個獨特的領域。如果這項工作沒有問題,那麼它應該可以嗎?

UPDATE NewTable 
INNER JOIN OldTable 
    ON NewTable.Fishname = OldTable.Fishname AND NewTable.Angler = OldTable.Angler 
SET NewTable.Weight = OldTable.Weight 
+3

請張貼您的表格結構,一些示例數據,以及您以前的嘗試之一..還有,哪些RBDMS適用於此目的? – 2013-03-15 18:12:45

+0

已添加一些附加信息。 – 2013-03-15 19:02:10

回答

0

如果您想從舊的數據中取數據並將其插入新數據,請使用帶有select語句的插入查詢。它會插入所有匹配的記錄。您不一定非要使用php,只需使用mysql查詢:

INSERT INTO NewTableName (Field1, Field2, Field3, Weight) 
SELECT Field1, Field2, Field3, Weight) 
FROM OldTableName 
WHERE Weight > 0 

請注意,字段的順序必須匹配。

+0

INSERT將使用已經存在的記錄嗎?我是否需要使用更新,因爲新表中的記錄都設置爲零。 – 2013-03-15 18:34:40

+0

它不會傷害現有記錄。但是,我會指出,如果您有主鍵或唯一鍵集,如果它找到重複項,它將會失敗。這是你需要決定的地方,「我想只添加那些還沒有在新表格中的記錄嗎?」或「我想從舊錶中插入時是否覆蓋新表中的現有記錄?」 – Raythe 2013-03-15 18:45:57

+0

謝謝雷神。我想用新表中的記錄更新新表中的記錄。由於新表包含所有人的所有記錄,但每個記錄都爲零。因此,更新這些記錄與舊的記錄將保持他們捕捉哪條魚的位置。 – 2013-03-15 18:58:11