Ich versuche, eine Update-Abfrage zu erstellen und wenig Fortschritte bei der richtigen Syntax. Die folgende Abfrage funktioniert:MySQL Update-Abfrage mit linken Join und Gruppe von
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
Es erstellt eine Liste von Tripletts Index1, Index2, EventCounts. Dies geschieht nur für den Fall, dass t.SpecialEventCount NULL ist. Die Aktualisierungsabfrage, die ich versuche zu schreiben, sollte diesen SpecialEventCount auf diese Anzahl festlegen, d. H. COUNT (m.EventType) in der obigen Abfrage. Diese Zahl könnte 0 oder irgendeine positive Zahl sein (daher die linke Verknüpfung). Index1 und Index2 zusammen sind einzigartig in Tabelle t und sie werden verwendet, um Ereignisse in MEvent zu identifizieren.
Wie muss ich die Select-Abfrage ändern, um eine Update-Abfrage zu werden? I.e. etwas wie
aber ich bin verwirrt was zu setzen wo und mit zahlreichen verschiedenen Vermutungen gescheitert sind.
Danke, sieht ähnlich wie viele Dinge, die ich versucht habe. Leider kommt der folgende Fehler zurück: # 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe von "GROUP BY t.Index1, t.Index2" in Zeile 9 – Rob
mit Version 5.0.90-Protokoll, wenn dies hilft – Rob
bearbeitet, um stattdessen Unterabfrage verwenden – Hammerite