-1

我在不同的mysql数据库中有两个表。

我想从表 A 复制到表 B。只有一种方法。我需要从表 B 中读取最后一个日期时间,然后检查在读取的日期时间之后是否有任何数据添加到表 A 中。如果添加了一些数据,则复制它。

我试过这个:

如果我刷新页面,它会写一行,但我需要它一次加载所有内容!

do
   {

#TABLE A    
$querylastA = "SELECT * FROM `stock` ORDER BY `jrk` DESC LIMIT 1";
$resultlastA = mysql_query($querylastA) or die(mysql_error());
while($rows=mysql_fetch_array($resultlastA)){
$lastcodeA = $rows['datetime'];
}

#TABLE B
$querylastB = "SELECT * FROM `stockcopy` ORDER BY `jrk` DESC LIMIT 1";
$resultlastB = mysql_query($querylastB) or die(mysql_error());
while($rows=mysql_fetch_array($resultlastB)){
$lastcodeB = $rows['datetime'];
}

#TABLE A - NEXT DATE AFTER LAST DATE IN TABLE B
$querynextA = "SELECT datetime FROM stock WHERE datetime > '$lastcodeB' ORDER BY datetime ASC LIMIT 1";
$resultnextA = mysql_query($querynextA) or die(mysql_error());
while($rows=mysql_fetch_array($resultnextA)){
$nextcodeA = $rows['datetime'];
}


   mysql_query("INSERT INTO stockcopy(datetime, data1, data2) SELECT datetime, data1, data2 FROM stock WHERE datetime = '$nextcodeA'");
   echo "Date from table A " . $lastcodeA . "<br>";
   echo "Date from table B " . $lastcodeB . "<br>";
   }
 while ('$lastcodeA' == '$lastcodeB');
4

3 回答 3

1

您可以使用SELECT语句在表中插入数据,因此您只需将条件放入SELECT.

例如:

INSERT INTO table_example(foo, bar)
SELECT foo, bar FROM table_example2
WHERE time_condition > {SOME DATE}

这会将SELECT语句返回的行插入到 table_example 中,这些行满足时间条件。您需要将 {SOME DATE} 替换为实际日期(不带括号)。

另外,请参阅:INSERT with SELECT

还有:跨不同数据库选择列

于 2013-01-28T12:16:16.297 回答
0

您可以在几乎不了解 SQL 的情况下做到这一点,但需要一点创造力 :)

创建一个临时表 ( table_c),并复制其中的内容table_a

然后手动(这意味着通过在 phpmyadmim 中运行删除查询)删除不再重要的信息(DELETE FROM table_c WHERE id < 1000例如)。

然后,从中导出信息table_c并将其导入table_b(并删除table_c

于 2013-01-28T12:15:07.640 回答
0

问题出在:while ('$lastcodeA' == '$lastcodeB');

将其更改为:while ($lastcodeA != $lastcodeB);现在它可以工作了!谢谢你们 :)

于 2013-01-29T07:29:48.750 回答