2014-10-02 33 views
0

在數據庫MySQL version 5.5.24-log我有兩個表tbl_t1tbl_t2的MySQL 5.5.24日誌更新查詢加入

這張表共有鑰匙area

mysql> SELECT 
    areat2, 
    areat1, 
    nameareat1, 
    monthareat2 
FROM 
    tbl_t1 t1 
JOIN tbl_t2 t2 ON t1.areat1 = t2.areat2 
WHERE 
    monthareat2 = '2014-08' 
GROUP BY 
    t1.areat1 
ORDER BY 
    t1.nameareat1 ASC; 
+--------+--------+-----------------------+-------------+ 
| areat2 | areat1 | nameareat1   | monthareat2 | 
+--------+--------+-----------------------+-------------+ 
| XX4M | XX4M | AREA AAAAAA   | 2014-08  | 
| XX5M | XX5M | AREA BBBBBB   | 2014-08  | 
| XX4N | XX4N | AREA CCCCCC   | 2014-08  | 
| XX1M | XX1M | AREA DDDDDD   | 2014-08  | 
+--------+--------+-----------------------+-------------+ 
4 rows in set 

現在我需要更新的字段validtbl_t1當兩個表中的按鍵面積禮物:

這是因爲,如果嘗試這個連接查詢的輸出正確的是如此的真實。

我試過這個解決方案,但是我有錯誤。

UPDATE tbl_t1 t1 
JOIN (
    SELECT 
    areat2, 
    areat1, 
    nameareat1, 
    monthareat2 
    FROM 
     tbl_t1 t1 
    JOIN tbl_t2 t2 ON t1.areat1 = t2.areat2 
    WHERE 
     monthareat2 = '2014-08' 
    GROUP BY 
     t1.areat1 
) AS t2 ON t1.areat1 = t2.areat2 
SET t1.valid = 1; 

[Err] 1060 - Duplicate column name 'areat1' 

你能解釋這是怎麼回事?

預先感謝您。

+0

哪個查詢爲您提供了這些錯誤消息?顯示兩個表的表格創建語句。 – Jens 2014-10-02 09:34:08

+0

錯誤發生在更新查詢中 – 2014-10-02 09:35:40

+0

沒有名稱爲「area」的列,因此該消息不能從它發出。 – Jens 2014-10-02 09:36:29

回答

0

使用diferend別名,在你的內心和外部查詢:

UPDATE tbl_t1 t3 
JOIN (
    SELECT 
    areat2, 
    areat1, 
    nameareat1, 
    monthareat2 
    FROM 
     tbl_t1 t1 
    JOIN tbl_t2 t2 ON t1.areat1 = t2.areat2 
    WHERE 
     monthareat2 = '2014-08' 
    GROUP BY 
     t1.areat1 
) AS t4 ON t3.areat1 = t4.areat2 
SET t3.valid = 1;