2017-10-27 12 views

Antwort

2

könnte Sie nicht Tabelle aktualisieren kann basierend auf einem subselect für vermeiden diese Sie dinmically eine temporäre Tabelle basierend auf subselect ein erstellen sollte Siehe hierzu

UPDATE instructor 
SET salary=salary*1.05 
where salary< ( 
     select t.my_avg 
     from (
      select avg(salary) my_avg from instructor 
    ) t 
) 
+0

Ich denke, das ist die Lösung, aber es gibt einen kleinen Fehler, Sie brauchen ein t Alias ​​nach von (...) t –

+0

@AntonioAttadia ja .. danke Antwort aktualisiert – scaisEdge

1

Sie können eine Tabelle nicht aktualisieren und sie als Subselect innerhalb derselben Abfrage verwenden. Das macht keinen Sinn.

Um Ihr Ziel zu erreichen, müssen Sie zwei verschiedene Abfragen ausführen. Der erste wird Ihr Subselect sein. Die zweite Abfrage aktualisiert dann die Tabelle mit dem Ergebnis der ersten Abfrage als Parameter.

Abfrage 1:

select avg(salary) from instructor 

Abfrage 2:

UPDATE instructor 
SET salary=salary*1.05 
where salary < @avg_salary 
+0

@Strawberry: Warum der Downvote? – Jacobm001

+0

Dies ist keine Antwort – Strawberry

+0

@Strawberry: Es ist eine Antwort obwohl. Es enthält Informationen darüber, warum die Abfrage nicht funktioniert und listet auf, wie das Problem gelöst werden kann. – Jacobm001

Verwandte Themen