0

希望有人可以帮助...

我有两张桌子,里面有渔获量,并记录了每个垂钓者的个人最佳成绩。我现在所做的是在不断增长的列表中添加更多物种。

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

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

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

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

我尝试了多种方法,但失败得很惨。

旧表(Specie、FishNm、Position、Fisherman、lb、oz、dr、Drams、PegName、Date)新表相同。

旧表包含 - 来自捕获的旧记录。新表基本上是对所有记录的重置,其中包含要捕获的附加鱼名。

新表包含所有鱼名并重置为 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
4

1 回答 1

0

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

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

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

于 2013-03-15T18:19:05.340 回答