2013-07-10 127 views
1

這是二SugarCRM的表之間的更新查詢,既INNODB 似乎很簡單,但運行時它不更新記錄的MySQL更新查詢

查詢執行OK,0行受到影響

我們已經運行一個選擇查詢,以確保我們在ID上匹配 已嘗試更新...選擇變體

已檢查兩個表的索引 - 目前和顯然OK 有沒有人有任何提示。

UPDATE accounts new LEFT join accounts_old old 
ON (new.id = old.id) 
SET new.billing_address_country = old.billing_address_country 

感謝您的任何想法。

回答

1

除非伴隨WHERE ... IS NULL,UPDATE查詢中的OUTER JOINs極其罕見。你確定這就是你想要的嗎?

除此之外沒有什麼錯此查詢...

DROP TABLE IF EXISTS accounts; 

CREATE TABLE accounts(id INT NOT NULL PRIMARY KEY,billing_address_county VARCHAR(40) NOT NULL); 

DROP TABLE IF EXISTS accounts_old; 

CREATE TABLE accounts_old(id INT NOT NULL PRIMARY KEY,billing_address_county VARCHAR(40) NOT NULL); 

INSERT INTO accounts VALUES (1,'Hale County'); 
INSERT INTO accounts VALUES (2,'Perry County'); 

INSERT INTO accounts_old VALUES (1,'Hale County'); 
INSERT INTO accounts_old VALUES (2,'Tuscaloosa County'); 


UPDATE accounts new 
    JOIN accounts_old old 
    ON old.id = new.id 
    SET new.billing_address_county = old.billing_address_county; 

Query OK, 1 row affected (0.01 sec) 
    Rows matched: 2 Changed: 1 Warnings: 0 

    mysql> SELECT * FROM accounts; 
    +----+------------------------+ 
    | id | billing_address_county | 
    +----+------------------------+ 
    | 1 | Hale County   | 
    | 2 | Tuscaloosa County  | 
    +----+------------------------+ 
    2 rows in set (0.00 sec) 

mysql> 
+0

草莓 - 非常感謝您的詳細答覆。一個澄清 - 這是否意味着原始左連接等於在MySQL – prema

+0

排序的外連接。有兩種OUTER JOIN;左外連接和右外連接。在MySQL中,OUTER關鍵字(如INNER JOIN的INNER關鍵字)是可選的,並且經常被忽略。實際上,實際上只有一種OUTER JOIN - 因爲理論上,每個LEFT JOIN都可以被重寫爲RIGHT JOIN(反之亦然),儘管在複雜的查詢中我很難弄清楚如何做到這一點。 – Strawberry

+0

好的,我們將對這些暗示進行一些研究。再次感謝您的回覆 - 無價 – prema