将同一张表中与ID相匹配的列的值设为NULL
P粉463811100
P粉463811100 2024-01-10 17:12:11
0
1
451

我正在处理带有多个列的住房数据。在清理过程中,我注意到在“PropertyAddress”列中有一些Null值,并且我想确认这些Null值是否可以与ParcelID匹配。因此,我编写了以下查询来确认前面的断言,并在查询下方显示结果。

SELECT a.ParcelID, a.PropertyAddress, b .ParcelID, b.PropertyAddress
FROM nashville_housing a
JOIN nashville_housing b
    on a.ParcelID = b.ParcelID
    AND a.UniqueID <> b.UniqueID
WHERE a.PropertyAddress is null;
包裹ID 属性地址 包裹ID 属性地址
092 13 0 322.00 092 13 0 322.00 237 37TH AVE N,纳什维尔
043 04 0 014.00 043 04 0 014.00 112 HILLER DR,老胡桃木
026 05 0 017.00 026 05 0 017.00 208 东大道,古德莱特维尔
042 13 0 075.00 042 13 0 075.00 222 FOXBORO DR,麦迪逊

在确认可以使用ParcelID将Null值更改为正确的PropertyAddress后,我编写了UPDATE查询:

UPDATE nashville_housing
SET PropertyAddress = ( 
SELECT a.ParcelID, b.PropertyAddress, b .ParcelID, b.PropertyAddress
FROM nashville_housing a
JOIN nashville_housing b
    on a.ParcelID = b.ParcelID
    AND a.UniqueID <> b.UniqueID
WHERE a.PropertyAddress is null);

但是出现错误“Error Code: 1241. Operand should contain 1 column(s)”

所以,我将查询重写为:

UPDATE a
SET PropertyAddress = IFNULL(a.PropertyAddress,b.PropertyAddress)
WHERE a.PropertyAddress is null;

但是出现错误“Error Code: 1146. Table 'nasville_housing.a' doesn't exist”

最后,我写了:

UPDATE a
SET PropertyAddress = IFNULL(a.PropertyAddress,b.PropertyAddress) in (
SELECT a.ParcelID, b.PropertyAddress, b .ParcelID, b.PropertyAddress
FROM nashville_housing a
JOIN nashville_housing b
    on a.ParcelID = b.ParcelID
    AND a.UniqueID <> b.UniqueID
WHERE a.PropertyAddress is null);

但是出现错误“Error Code: 1146. Table 'nasville_housing.a' doesn't exist”

我感谢任何人能给我提供的支持。

P粉463811100
P粉463811100

全部回复(1)
P粉639667504

您可以使用JOIN进行UPDATE操作:https://www.mysqltutorial.org/mysql-update-join/

UPDATE nashville_housing a
LEFT JOIN nashville_housing b ON a.ParcelID = b.ParcelID 
AND a.UniqueID <> b.UniqueID 
SET a.PropertyAddress = b.PropertyAddress 
WHERE
    a.PropertyAddress IS NULL;
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板