DBMSでの割り当てのためにテーブルを更新する必要があります。このエラーが発生する理由がわかりません。
UPDATE Customers
SET CreditLimit = CreditLimit * 1.25
FROM(SELECT *
FROM Orders
WHERE Amount > 250
HAVING COUNT(*) >= 2);
何か案は?
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
指定したように、ステートメントには句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;