所以我有一个名为 customers
的表,在该表中有些地方填写了 zip
列,但是 state
列是不是。
我们可以合理地假设,如果我们有另一个客户同时填充了 zip
和 state
列,并且 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/