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

InformationsquelleAutor Meem | 2014-06-26
Schreibe einen Kommentar