2014-09-10 67 views
1

我試圖更新表1的COUNTRY_ID的,所以我可以刪除列iso_2_codeCountry因該數據是在數據庫冗餘和已經存儲在表2MSQL更新表1使用表2 UPDATE選擇從

表1 - oc_ip_geo_table

================================================================================================= 
| ID | StartRange  | EndRange  | iso_2_code | Country  | country_id | 
================================================================================================= 
| 1 | 1.0.1.0  | 1.0.3.255  |  CN  | China  |  0  | 
| 2 | 1.0.4.0  | 1.0.7.255  |  AU  | Australia |  0  | 
| 3 | 1.0.8.0  | 1.0.15.255  |  CN  | China  |  0  | 
| 4 | 1.0.16.0  | 1.0.31.255  |  JP  | Japan  |  0  | 
| ... | ...   | ...    |  ...  | ...   |  ...  | 
| 87035 | 223.255.255.0 | 223.255.255.255 |  AU  | Australia |  0  | 
------------------------------------------------------------------------------------------------- 

表2 - oc_country

================================================================================= 
| country_id  | name   | iso_code_2 | * | * | * | 
================================================================================= 
|  1   | Afghanistan  |  AF  | * | * | * | 
|  2   | Albania   |  AL  | * | * | * | 
|  3   | Algeria   |  DZ  | * | * | * | 
|  ...   | ...    |  ...  | ... | ... | ... | 
|  251   | Canary Islands |  IC  | * | * | * | 
--------------------------------------------------------------------------------- 

搜索到谷歌搜索結果後,我發現我的查詢應該looklike日是。但它似乎不工作。

UPDATE oc_ip_geo_table 
SET oc_ip_geo_table.country_id = oc_country.country_id 
FROM oc_ip_geo_table 
INNER JOIN oc_country 
ON oc_ip_geo_table.iso_2_code = oc_country.iso_code_2 

誰能幫我用正確的查詢

+0

您使用的是MySQL還是MS SQL? – 2014-09-10 12:12:00

回答

0

好似乎查詢我試圖之前,我在這裏發佈的幾乎是正確的,但改變一點解決它

UPDATE oc_ip_geo_table AS t1 
SET t1.country_id = 
    (SELECT t2.country_id 
     FROM oc_country AS t2 
     WHERE t2.iso_code_2 = t1.iso_2_code 

    ) 

更改爲

UPDATE oc_ip_geo_table AS t1 
SET t1.country_id = 
    (SELECT t2.country_id 
     FROM oc_country AS t2 
     WHERE t1.iso_2_code = t2.iso_code_2 

    ) 
0

我不是舒爾..但我想你已經設置後刪除oc_ip_geo_table

UPDATE oc_ip_geo_table 
SET country_id = occ.country_id 
FROM oc_ip_geo_table opi 
INNER JOIN oc_country occ 
ON opi.iso_2_code = occ.iso_code_2 
+1

Tnxs的評論我也試過,但是無論如何,力工作,這似乎工作 UPDATE oc_ip_geo_table爲T1 SET t1.country_id = (SELECT t2.country_id FROM oc_country爲T2 WHERE t1.iso_2_code = t2.iso_code_2 ) – 2014-09-10 12:06:22