使用另一个表(PHP)更新选定的表记录

时间:2013-03-15 18:11:17

标签: php sql

希望有人可以提供帮助......

我有两张桌子,里面有鱼捕捞并记录每个钓鱼者的个人羽毛。我现在所做的是在不断增长的名单中添加更多物种。

所以我现在已经备份了旧数据库(catches_old)并创建了一个新表(catches)。

捕获量将所有物种设置为零。

获取唯一记录的唯一方法是同时使用FishName和Angler。

我需要的是一段简单的代码来检查权重是否大于零,这意味着它有一条记录,然后我会用旧的详细信息更新记录。

我尝试了多种方法,但却失败了。

Table Old(Specie,FishNm,Position,Fisherman,lb,oz,dr,Drams,PegName,Date) 表New是一样的。

表旧包含 - 来自捕获的旧记录。 表new基本上是所有记录的重置,其中包含额外的鱼名。

Table New包含所有鱼类名称并重置为0 drams。

Table Old现在需要使用过去捕获的catch记录更新Table New。仍然没有被旧桌子抓住的渔获物,不需要转移,只需要转移旧渔获物。

示例数据 - (不准确的drams计算lol)

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

1 个答案:

答案 0 :(得分:0)

如果您想从旧数据中获取数据并将其插入新数据,请使用带有select语句的insert查询。它将插入所有匹配的记录。你不一定要使用php,只需使用mysql查询:

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

请注意,字段的顺序必须匹配。