我的数据库中有两个表,我想从Table 1
更新Table 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
.
.
如何更新Table 1
以便我可以startime
将Table 2
endtime
插入Table 1
上的 Ausloesungsart.UNDEFINED= \= Unbekannt
Ausloesungsart.FIS=0 \= FIS
Ausloesungsart.MANUELL=1 \= Manuell
?
答案 0 :(得分:0)
您可以在UPDATE
查询中加入这两个表格(在documantation中阅读相关内容):
UPDATE `Table 1` t1
JOIN `Table 2` t2 ON t1.ID = t2.ID
SET t1.endtime = t2.starttime
答案 1 :(得分:-1)
相同的查询。不同的连接语法。
第一种是旧式ANSI,后者是后来的ANSI。如果你必须在他们之间挑选,选择后者。
由于USING的限制(不能使用别名),我不会使用其中任何一个。而是写为:
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
here对SQL Server也是类似的讨论:
通常,习惯于以可移植的方式编写SQL语法。虽然您可能永远不会移植您的代码,但您至少可以将您的技能移植到多个数据库(这通常是一件很酷的事情,以避免成为一个单一的小马)。