mysql - 如何根据同一表中另一列的数据填充一列?

标签 mysql sql

我将两组数据连接到一个表中。一个是美国地址,另一个是加拿大地址。我需要能够按国家/地区排序的选项。因此,我在表中插入了一个空白的国家/地区列,我的表现在如下所示:

 state | country | zip
-----------------------
       |         | 
       |         |


我有州和邮政编码数据,但我的国家/地区列为空。由于美国邮政编码格式是 5 位数字(例如 12345),而 CAN 邮政编码的格式类似于(例如 G5Y 5S7),因此 mysql 是否可以使用某种形式填充国家/地区数据...

UPDATE table 
SET country = US 
WHERE zip (LIKE or =) (US zip format);

然后返回并使用某种 WHERE zip LIKE NULL 用 CAN 填充其余国家/地区数据?

谢谢

最佳答案

您可以检查 zip 列中值的长度。

UPDATE table 
   set country = 'US'
 where char_length(zip) = 5;

然后:

UPDATE table 
   set country = 'CAN'
 where country is null

-- 或者,一次性 --

UPDATE table t
   set country = 
  (case when char_length(t.zip) = 5
   then 'US'
  else 'CAN'
  end);

关于mysql - 如何根据同一表中另一列的数据填充一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38709186/

相关文章:

php - 未使用的 mysql 表会影响网站性能吗?

sql - 为什么以及如何 SQL 条件不在 psql 解释计划中?

MySQL:从列表中获取下一个最接近的值

php - 如何在PHP中获取值形式的数组

mysql - 如何构建一个包含表之间匹配计数的矩阵?

sql - 地理( map )数据的理想数据库

sql - MySQL : return "0" & "1" rather than "false" & "true"

MySQL-从另一个表向临时表添加列

javascript - SQL排行榜问题nodejs discord.js

php - Eloquent (Laravel) 中两个表之间基于辅助表的关系