Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从表2更新表1_Php_Mysql - Fatal编程技术网

Php 从表2更新表1

Php 从表2更新表1,php,mysql,Php,Mysql,我的数据库中有两个表,我想从表2 表1如下所示: id - eventid - hostname - trigger - startime - endtime 1 00001 - 10.10.10.1 - PROB - 2017-08-03 18:33 ? 2 00001 - 10.10.10.1 - PROB - 2017-08-05 00:33 ? 3 00001 - 10.10.10.1 - PROB - 2017-08

我的数据库中有两个表,我想从
表2

表1如下所示:

id - eventid - hostname   - trigger - startime      - endtime  
1     00001  - 10.10.10.1 - PROB    - 2017-08-03 18:33  ?
2     00001  - 10.10.10.1 - PROB    - 2017-08-05 00:33  ?
3     00001  - 10.10.10.1 - PROB    - 2017-08-05 00:32  ?
4     00002  - 10.10.10.2 - PROB    - 2017-08-02 14:58  ?
5     00002  - 10.10.10.2 - PROB    - 2017-08-07 17:59  ?
.
.
表2如下所示:

id - eventid - hostname   - trigger - startime       
1     00001  - 10.10.10.1 - OK    - 2017-08-03 19:22  
2     00001  - 10.10.10.1 - OK    - 2017-08-05 03:13  
3     00001  - 10.10.10.1 - OK    - 2017-08-05 04:30  
4     00002  - 10.10.10.2 - OK    - 2017-08-02 15:08  
5     00002  - 10.10.10.2 - OK    - 2017-08-07 19:29
.
.

如何更新
表1
,以便将
表2
中的
开始时间
插入
表1
上的
结束时间

您可以在
更新
查询中加入这两个表(请在中阅读):


同样的问题。不同的连接语法

第一种是老式的ANSI,后者是后来的ANSI。如果你必须在两者之间选择,就选择后者

由于使用的限制(不能使用别名),我不会使用它们中的任何一个。改为:

UPDATE table1 A 
INNER JOIN (SELECT id,COUNT(*) idcount FROM table2 GROUP BY id) as B
  ON B.id = A.id 
SET A.Freq = B.idcount
See this Oracle answer as to why USING is not to be preferred: https://stackoverflow.com/questions/456684/mixing-using-and-on-in-oracle-ansi-join
对于SQL Server也有类似的讨论:


通常,要习惯以可移植的方式编写SQL语法。虽然您可能永远不会移植代码,但至少可以将您的技能移植到多个数据库中(这通常是一件很酷的事情,可以避免成为一匹小马驹).

阅读关于update Join实际上,两个表的id不同,只是eventid相同,我使用了这个命令,但它只插入第一个匹配表单table2,其余的都是,我的意思是像这样的id-eventid-hostname-trigger-startime-endtime 100001-10.10.1-PROB-2017-08-03 18:33 2017-08-03 19:22 2 00001-10.10.1-PROB-2017-08-05 00:33 2017-08-03 19:22 3 00001-10.10.1-PROB-2017-08-05 00:32 2017-08-03 19:22@wael:如果ID不同,那么如何确定应该在表1的哪一行中插入哪一个endtime?
UPDATE table1 A 
INNER JOIN (SELECT id,COUNT(*) idcount FROM table2 GROUP BY id) as B
  ON B.id = A.id 
SET A.Freq = B.idcount
See this Oracle answer as to why USING is not to be preferred: https://stackoverflow.com/questions/456684/mixing-using-and-on-in-oracle-ansi-join