簡體   English   中英

MySQL更新Lefl加入錯誤#1064

[英]MySQL Update Lefl Join Error #1064

我有以下查詢:

UPDATE `order_tab`
LEFT JOIN `currency_tab`
ON (`order_tab`.`order_actual_loading_date` = `currency_tab`.`currency_date`)
SET `order_tab`.`order_cost_converted` = (`order_tab`.`order_cost_pricelist` * `currency_tab`.`currency_value`);

運行后,我有錯誤:

您的SQL語法附近'LEFT JOIN錯誤currency_tab ON( order_taborder_actual_loading_date =`order_c'第2行

MySQL版本:

+---------------+-------------+
| Variable_name | Value       |
+---------------+-------------+
| version       | 3.23.52-log |
+---------------+-------------+

order_tab

+---------------------------------+------------------+------+-----+---------+----------------+
| Field                           | Type             | Null | Key | Default | Extra          |
+---------------------------------+------------------+------+-----+---------+----------------+
| order_id                        | int(10) unsigned |      | PRI | NULL    | auto_increment |
| user_id                         | int(10) unsigned |      |     | 0       |                |
| order_loading_address           | blob             | YES  |     | NULL    |                |
| order_loading_city              | varchar(50)      | YES  |     | NULL    |                |
| order_unloading_address         | blob             | YES  |     | NULL    |                |
| order_unloading_city            | varchar(50)      | YES  |     | NULL    |                |
| order_desc                      | blob             | YES  |     | NULL    |                |
| order_collect_date_start        | date             | YES  |     | NULL    |                |
| order_collect_date_end          | date             | YES  |     | NULL    |                |
| order_delivery_date             | date             | YES  |     | NULL    |                |
| order_cost_pricelist            | float(11,2)      | YES  |     | NULL    |                |
| order_currency_pricelist        | varchar(6)       | YES  |     | NULL    |                |
| order_cost_forwarder            | float(11,2)      | YES  |     | NULL    |                |
| order_currency_forwarder        | varchar(6)       | YES  |     | NULL    |                |
| order_cost_converted            | float(11,2)      | YES  |     | NULL    |                |
| order_currency_converted        | varchar(6)       | YES  |     | NULL    |                |
| order_distance                  | float(11,2)      | YES  |     | NULL    |                |
| order_activation_date           | datetime         | YES  |     | NULL    |                |
| order_state                     | int(2) unsigned  |      |     | 0       |                |
| order_notes                     | blob             | YES  |     | NULL    |                |
| order_date                      | datetime         | YES  |     | NULL    |                |
| order_payer                     | varchar(50)      | YES  |     | NULL    |                |
| order_receiver                  | varchar(50)      | YES  |     | NULL    |                |
| order_forwarder                 | int(10) unsigned | YES  |     | NULL    |                |
| order_forwarder_car_no          | varchar(10)      | YES  |     | NULL    |                |
| order_forwarder_contact_address | blob             | YES  |     | NULL    |                |
| order_forwarder_trailer_no      | varchar(20)      | YES  |     | NULL    |                |
| order_reservation_date          | datetime         | YES  |     | NULL    |                |
| order_assortment                | varchar(11)      | YES  |     | NULL    |                |
| order_weight                    | float(6,3)       | YES  |     | NULL    |                |
| order_group                     | int(2) unsigned  | YES  |     | NULL    |                |
| order_type                      | int(2) unsigned  | YES  |     | NULL    |                |
| order_invoice_no                | varchar(10)      | YES  |     | NULL    |                |
| order_closing_date              | datetime         | YES  |     | NULL    |                |
| order_actual_loading_date       | date             | YES  |     | NULL    |                |
| order_actual_unloading_date     | date             | YES  |     | NULL    |                |
| order_company_offerer           | varchar(11)      |      |     |         |                |
| objversion                      | timestamp(14)    | YES  |     | NULL    |                |
+---------------------------------+------------------+------+-----+---------+----------------+

currency_tab

+----------------+------------+------+-----+---------+-------+
| Field          | Type       | Null | Key | Default | Extra |
+----------------+------------+------+-----+---------+-------+
| currency_date  | date       | YES  |     | NULL    |       |
| currency_value | float(6,4) | YES  |     | NULL    |       |
+----------------+------------+------+-----+---------+-------+

如何避免此錯誤?

我認為這段代碼應該工作:

UPDATE `order_tab`, `currency_tab`
SET `order_tab`.`order_cost_converted` = (`order_tab`.`order_cost_pricelist` * `currency_tab`.`currency_value`)
WHERE (`order_tab`.`order_actual_loading_date` = `currency_tab`.`currency_date`)

或[推薦]

UPDATE `order_tab`
SET `order_tab`.`order_cost_converted` = (`order_tab`.`order_cost_pricelist` * (SELECT `currency_tab`.`currency_value` FROM `currency_tab` 
WHERE `order_tab`.`order_actual_loading_date` = `currency_tab`.`currency_date`))

注意 :
使用LEFT JOIN可以使currency_tab成為可能。 currency_value有時為NULL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM