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?
上面是课程教学练习,以及自己出的题目。
完毕,