[英]Error involving subquery in SQL UPDATE statement
我正在嘗試為MySQL中的特定行更新字段的值,但是卻收到了一個我不太了解的錯誤。
在這里,我們有兩個表CUSTOMER_TBL
和ORDERS_TBL
,我想更新CUSTOMER_TBL
使得CUST_NAME
為客戶誰與作出該命令ORD_NUM
等於23E934是“DAVIDS市場”。
這是兩個表:
mysql> DESCRIBE CUSTOMER_TBL;
+--------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| CUST_ID | varchar(10) | NO | PRI | NULL | |
| CUST_NAME | varchar(30) | NO | | NULL | |
| CUST_ADDRESS | varchar(20) | NO | | NULL | |
| CUST_CITY | varchar(15) | NO | | NULL | |
| CUST_STATE | char(2) | NO | | NULL | |
| CUST_ZIP | int(5) | NO | | NULL | |
| CUST_PHONE | char(10) | YES | | NULL | |
| CUST_FAX | varchar(10) | YES | | NULL | |
+--------------+-------------+------+-----+---------+-------+
8 rows in set (0.05 sec)
mysql> DESCRIBE ORDERS_TBL;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| ORD_NUM | varchar(10) | NO | PRI | NULL | |
| CUST_ID | varchar(10) | NO | | NULL | |
| PROD_ID | varchar(10) | NO | | NULL | |
| QTY | int(6) | NO | | NULL | |
| ORD_DATE | date | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.07 sec)
和給出錯誤的代碼:
mysql> UPDATE CUSTOMER_TBL
-> SET CUST_NAME = 'DAVIDS MARKET'
-> WHERE CUST_ID = (SELECT C.CUST_ID
-> FROM CUSTOMER_TBL C,
-> ORDERS_TBL O
-> WHERE C.CUST_ID = O.CUST_ID
-> AND O.ORD_NUM = '23E934');
ERROR 1093 (HY000): You can't specify target table 'CUSTOMER_TBL' for update in FROM clause
在子查詢中引用CUSTOMER_TBL
有什么問題,我將如何解決?
謝謝。
您可能會做類似的事情:
UPDATE CUSTOMER_TBL INNER JOIN ORDERS_TBL
ON CUSTOMER_TBL.CUST_ID = ORDERS_TBL.CUST_ID
SET CUSTOMER_TBL.CUST_NAME = 'DAVIDS MARKET'
WHERE ORDERS_TBL.ORD_NUM = '23E934';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.