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