我正在尝试创建一个更新查询,并且在获取正确的语法方面进展甚微。以下查询正在运行:
SELECT t.Index1, t.Index2, COUNT( m.EventType ) FROM Table t LEFT JOIN MEvents m ON (m.Index1 = t.Index1 AND m.Index2 = t.Index2 AND (m.EventType = 'A' OR m.EventType = 'B') ) WHERE (t.SpecialEventCount IS NULL) GROUP BY t.Index1, t.Index2
它创建一个三元组的列表Index1,Index2,EventCounts。仅在t.SpecialEventCount为NULL的情况下才这样做。我尝试编写的更新查询应将此SpecialEventCount设置为该计数,即上述查询中的COUNT(m.EventType)。此数字可以是0或任何正数(因此为左联接)。索引1和索引2在一起在表t中是唯一的,它们用于标识MEvent中的事件。
如何将选择查询修改为更新查询?即像
UPDATE Table SET SpecialEventCount=COUNT(m.EventType).....
但是我对放置在什么位置上的东西感到困惑,并以许多不同的猜测失败了。
我认为这(Index1, Index2)是对的唯一键Table,否则我希望引用t.SpecialEventCount会导致错误。
(Index1, Index2)
Table
t.SpecialEventCount
编辑查询以使用子查询,因为它无法使用 GROUP BY
GROUP BY
UPDATE Table AS t LEFT JOIN ( SELECT Index1, Index2, COUNT(EventType) AS NumEvents FROM MEvents WHERE EventType = 'A' OR EventType = 'B' GROUP BY Index1, Index2 ) AS m ON m.Index1 = t.Index1 AND m.Index2 = t.Index2 SET t.SpecialEventCount = m.NumEvents WHERE t.SpecialEventCount IS NULL