Folgende ist meine SQL-Abfrage vergleichen:POSTGRESQL nicht in der Lage null Spalten
update table
set unit_id = T1.unit_id_temp from
(select case when unit_id4 is not null then unit_id4
when unit_id3 is not null then unit_id3
when unit_id2 is not null then unit_id2
when unit_id1 is not null then unit_id1
else unit_id
end as unit_id_temp,
unit_id1,unit_id2,unit_id3,unit_id4
from table) T1
where table.unit_id4 = T1.unit_id4
and table.unit_id3 = T1.unit_id3
and table.unit_id2 = T1.unit_id2
and table.unit_id1 = T1.unit_id1
Aus der obigen Abfrage Ich kann keine Spalten vergleichen, wenn sie NULL sind, als die Bedingung falsch zurückgibt.
Beispiel: wenn unit_id4 null ist, table.unit_id4 = T1.unit_id4 gibt False zurück.
Daher schlägt meine Aktualisierung fehl, wenn eine der Spalten NULL-Werte enthält.
Ich versuchte mit nicht unterscheidet sich von, es funktioniert nicht. Werfe den folgenden Fehler:
UPDATE - 0 Zeilen, 0.000 Sek] [Code: 0, SQL-Status: 42601] ERROR: Syntaxfehler bei oder in der Nähe von "distinct"
Okay., Es tut mir so leid, dass ich ein paar Informationen verpasst habe: Ich probiere das auf AWS Redshift. Ich habe die vorherige Abfrage bereits ausprobiert, und was ich bekam, war: "Zieltabelle muss Teil eines Equijoin-Prädikats sein" – Renukadevi
Ich würde Ihre ursprüngliche Abfrage löschen, wenn ich Sie wäre, weil ich denke, dass es einfacher umgeschrieben werden kann. –
urghhhh., Danke viel .. das macht mich dumm .. Es ist mir nicht klar, COALESCE zu verwenden. – Renukadevi