php - SQL中如何将数据从一行复制到另一行

标签 php mysql sql phpmyadmin

所以我有一个名为 customers 的表,在该表中有些地方填写了 zip 列,但是 state 列是不是。

我们可以合理地假设,如果我们有另一个客户同时填充了 zipstate 列,并且 zip 与客户匹配没有填充 state,没有填充 state 的客户可以填充与其他匹配客户相同的值。

目标是当我们在另一行中知道它们时填充缺失值。

示例:

       BEFORE:                         AFTER:
/====================\         /====================\
| id | zip   | state |         | id | zip   | state |
|----|-------|-------|         |----|-------|-------|
| 0  | 12345 | FL    |   ==>   | 0  | 12345 | FL    |
| 1  | 67890 | CA    |   ==>   | 1  | 67890 | CA    |
| 2  | 67890 |       |   ==>   | 2  | 67890 | CA    |
| 3  | 12345 |       |         | 3  | 12345 | FL    |
| 4  | 10101 |       |         | 4  | 10101 |       |
\====================/         \====================/

我的问题:如何使用 MySQL 更新表并从另一行填充缺失的数据?

到目前为止,我有用于查找缺失值的 SQL:

SELECT * 
FROM customers 
WHERE country = 'united states' 
    AND (zip <> '' OR zip IS NOT NULL) 
    AND (state = '' OR state IS NULL)

最佳答案

你可以使用更新和内连接

update my_table as a
inner join source_table as b on  a.zip = b.zip 
set a.state = b.state 
where b.state is not null
or b.state = ''
AND country = 'united states' ;

关于php - SQL中如何将数据从一行复制到另一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38644995/

相关文章:

python - 使用 python NetCDF 写入 Mysql 时出错

php - 检查数据库中是否存在记录

mysql - 在子查询中加入 `greatest-n-per-group` 和 SUM

php - 在 url mod_rewrite 中隐藏扩展名 .php

php - 有没有办法用 PDO 获取按两列的值分组的关联数组?

php - 如何减去类型不同的行的同一列?

MySQL记录工作日和每小时的平均值

php - SQLSTATE[HY000] [1698] 拒绝用户访问 'root' @'localhost'

java - 在Java中,PreparedStatement如何为以下查询工作

sql - 将数据从本地 SQL 移动到 SQL Azure