更新列,其中列与其他列

时间:2015-09-24 21:58:52

标签: mysql

我有一个包含国家/地区名称的表格,ISO代码可以将其命名为country,另一个表格具有呼叫目的地名称,我们称之为前缀。我在前缀表中添加了一个名为“iso”的列来保存ISO代码。我需要更新prefix.iso,其中prefix.destination就像country.names

国家/地区名称是完整的国家/地区名称 国家/地区目的地具有国家/地区的名称以及本地提供商或城市的名称 例如:美国T-mobile,或澳大利亚橙色

我正在尝试这样的查询,但它没有完成工作

UPDATE `prefix`, `country` SET `prefix`.`iso` =  `country`.`countrycode` WHERE `prefix`.`destination` LIKE CONCAT(`country`.`countrycode`,'%')

1 个答案:

答案 0 :(得分:0)

这很好用。确保国家/地区表中的值符合预期。

mysql> USE test;
Database changed
mysql> CREATE TABLE country (id SERIAL, countrycode VARCHAR(2));
Query OK, 0 rows affected (0.01 sec)

mysql> CREATE TABLE prefix (destination VARCHAR(8), iso VARCHAR(2));
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO country VALUES (1, "CA"), (2, "US");
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> INSERT INTO prefix VALUES ("Canada", ""), ("USA", "");
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> UPDATE prefix, country SET iso = countrycode WHERE destination LIKE CONCAT(countrycode,'%');
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0

mysql> SELECT * FROM prefix;
+-------------+------+
| destination | iso  |
+-------------+------+
| Canada      | CA   |
| USA         | US   |
+-------------+------+
2 rows in set (0.00 sec)