2013-03-15 61 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