0

我必须为我在 DBMS 中的作业更新我的表。无法弄清楚为什么我会收到此错误。

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

有任何想法吗?

4

2 回答 2

1

update语句没有from您指定的子句。
您是否正在尝试做这样的事情: 对于至少有 2 个订单超过 250 美元的客户,将信用额度提高 25%

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 回答
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 回答