与之关联的每个值的SQL更新字段

时间:2019-02-09 21:50:34

标签: sql oracle oracle11g sql-update

我必须创建一个查询,该查询为该客户的每笔订单将客户折扣提高10(将先前值增加10)。
数据库结构如下:

CLIENT(client_id, name, discount)
ORDER(id, client_id)


有人知道吗?

3 个答案:

答案 0 :(得分:2)

我认为这就是您所需要的:

UPDATE CLIENT c 
SET c.DISCOUNT = c.DISCOUNT + 10 * (SELECT COUNT(*) FROM ORDER WHERE client_id = c.client_id)

在此声明中,

SELECT COUNT(*) FROM ORDER WHERE client_id = c.client_id

返回每个客户下的订单数量

答案 1 :(得分:0)

UPDATE CLIENT SET DISCOUNT = 10 where client_id in(从ORDER中选择SELECT client_id)

答案 2 :(得分:0)

子查询将是此类情况的最佳解决方案

更新客户端 设置CLIENT.DISCOUNT = CLIENT.DISCOUNT + 10 *(从订单中选择COUNT(*)client_id = CLIENT.client_id)