SQL 在Update 中用子查询

USE sql_store;
UPDATE orders
 SET comments = 'golden_customer'
 WHERE customer_id IN
                  ( SELECT customer_id
                  FROM customers
                  WHERE points > 8000)
UPDATE orders
SET comments = 'TX'
WHERE customer_id IN
                   (SELECT customer_id
                      FROM customers
					  WHERE state = 'TX')

子查询最重要的是,先写出位置,然后套用进update语句中

这两个代码都是正对子查询的练习。现在开始逻辑解释:

先写出查询位置并且执行,主要是看自己位置找错没有。找出来的结果两个都是只有customer的序号,没有多余的冗杂信息,不然会报错,具体报错:22:41:40    UPDATE orders SET comments = 'TX' WHERE orders.customer_id IN                    (SELECT *                       FROM customers        WHERE state = 'TX')    Error Code: 1241. Operand should contain 1 column(s)    0.000 sec

也就是说,SELECT 语句后面跟着的是具体的列,而不是一整个表格。

然后开始书写更新语句,即是 【SELECT】【SET】【WHERE】

这里都不需要写前缀,现在我还没有搞懂什么情况之下需要写明前缀。可以观察到这种语句里都没有加入复杂的前缀,可能就是默认前缀为order?

上面是课程教学练习,以及自己出的题目。

完毕,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值