2017-10-27 11 views

答えて

2

はあなたがサブセレクトAに基づくdinmically一時テーブルを作成する必要があります回避するには、このための副選択に基づいてテーブルを更新することはできません可能性がありこれを参照してください

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

私はこれが解決策だと思いますが、ちょっとしたエラーがあります。後でエイリアスが必要です。(...)t –

+0

@AntonioAttadiaはい..ありがとうございました。 – scaisEdge

1

表を更新して、同じ問合せ内で副選択として使用することはできません。そうすることは意味をなさない。

目的を達成するには、2つの異なるクエリを実行する必要があります。最初はあなたの副選択です。次に、2番目のクエリは、最初のクエリの結果をパラメータとして使用してテーブルを更新します。

クエリ1:

select avg(salary) from instructor 

クエリ2:

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

@Strawberry:なぜdownvoteですか? – Jacobm001

+0

これは答えではありません – Strawberry

+0

@Strawberry:それは答えです。これには、クエリが機能しない理由に関する情報と、問題の解決方法が記載されています。 – Jacobm001

関連する問題