Sql 通过引用where子句中子查询的值来更新表
我在下面的查询中尝试更新customers表,并在客户的订单超过其信用额度时增加客户信用额度,并将其信用额度增加到最大订单+1000美元Sql 通过引用where子句中子查询的值来更新表,sql,oracle,Sql,Oracle,我在下面的查询中尝试更新customers表,并在客户的订单超过其信用额度时增加客户信用额度,并将其信用额度增加到最大订单+1000美元 UPDATE CUSTOMERS SET CREDIT_LIMIT = Max_Order + 1,000 WHERE (SELECT max(AMOUNT) as Max_Order, CUST_NUM FROM ORDERS, CUSTOMERS WHERE CUST_NUM=CUST AND AMOUNT > CREDIT_LIMIT GROUP
UPDATE CUSTOMERS SET CREDIT_LIMIT = Max_Order + 1,000
WHERE (SELECT max(AMOUNT) as Max_Order, CUST_NUM
FROM ORDERS, CUSTOMERS WHERE CUST_NUM=CUST AND AMOUNT > CREDIT_LIMIT GROUP BY CUST_NUM)
我遇到的问题是,我无法使用子查询中引用的最大订单列来设置客户信用限额。当他们超过信用额度时,是否有其他方法可以将信用额度设置为订单的最大值
下面是sql FIDLE:一种方法是使用
合并
。另一种方法是使用两个子查询,一个在的where
中,另一个用于集合
:
UPDATE CUSTOMERS
SET CREDIT_LIMIT = (SELECT MAX(AMOUNT) + 1000
FROM ORDERS o
WHERE CUST_NUM = CUST AND AMOUNT > CREDIT_LIMIT
)
WHERE EXISTS (SELECT 1
FROM ORDERS o
WHERE CUST_NUM = CUST AND AMOUNT > CREDIT_LIMIT
);
啊,酷,我不知道你可以在设置的条件下有子查询。