0

DBMSでの割り当てのためにテーブルを更新する必要があります。このエラーが発生する理由がわかりません。

  UPDATE Customers
  SET CreditLimit = CreditLimit * 1.25
      FROM(SELECT *
           FROM Orders
           WHERE Amount > 250
           HAVING COUNT(*) >= 2);

何か案は?

4

2 に答える 2

1
UPDATE Customers
      SET CreditLimit = CreditLimit * 1.25
          FROM Customers
    Where Id in (
     select CustomerId 
     from orders 
     where  Amount > 250
     Group By CustomerId
     HAVING COUNT(*) >= 2);

また

UPDATE Customers
      SET CreditLimit = CreditLimit * 1.25
          FROM Customers c
    Where (select count(*) from orders o where o.CustomerId = c.Id And Amount > 250) > =2
于 2011-02-18T15:30:15.637 に答える
1

指定したように、ステートメントには句updateがありません。 次のようなことをしようとしていますか 。250以上のお金で少なくとも2つの注文がある顧客のクレジット制限を25%増やしますfrom

update Customers
   set CreditLimit = CreditLimit * 1.25
 where (select count(*)
          from Orders
         where Amount > 250
           and orders.customer_id = Customers.customer_id)) >= 2;

編集
私はあなたがOracle(ORAメッセージ)を使用していることに気づきました。すべての顧客を更新する可能性があるため、最もパフォーマンスの高い方法は、「更新可能な結合」、または次のようなマージステートメントを使用することだと思います。

merge 
 into customers
using (select customer_id
         from Orders o
        where amount > 250
        group 
           by customer_id
       having count(*) >= 2
      ) orders
    on(customers.customer_id = orders.customer_id)
when matched then
   update
      set customers.creditlimit = customers.creditlimit * 1.25;
于 2011-02-18T15:33:50.577 に答える