Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 通过引用where子句中子查询的值来更新表_Sql_Oracle - Fatal编程技术网

Sql 通过引用where子句中子查询的值来更新表

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

我在下面的查询中尝试更新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 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
                 );

啊,酷,我不知道你可以在设置的条件下有子查询。