Inner join innerhalb der update-Anweisung in PostgreSQL
Habe ich die Tabelle mit dem Namen temp_table, die aus folgenden Zeilen:
cola colb result
----------------
p4 s1 0
p8 s1 0
p9 s1 0
p5 f1 0
p8 f1 0
Nun muss ich das update-Ergebnis-Spalte mit dem count(*) des colb. Für was ich bin versuchen Sie die folgende Abfrage:
update tem_table
set result = x.result
from tem_table tt
inner join(select colb,count(*) as result from tem_table group by colb) x
on x.colb = tt.colb;
Und Auswahl von distinct colb und Ergebnis aus temp_table:
select distinct colb,result from tem_table;
Erste Ausgabe:
colb result
-----------
s1 3
f1 3
Aber die erwartete Ausgabe ist:
colb result
-----------
s1 3
f1 2
Bin ich nicht immer, wo ich bin, immer falsch in meiner Abfrage? Bitte helfen Sie mir.Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie nicht wiederholen Sie die Tabelle aktualisiert werden, in der
from
- Klausel. Dadurch wird ein Kartesisches self-join.Zitat aus dem Handbuch:
(Hervorhebung von mir)
Leider
UPDATE
unterstützt keine expliziten Verknüpfungen mit derJOIN
Schlüsselwort. So etwas wie dies funktionieren sollte: