我正在处理带有多个列的住房数据。在清理过程中,我注意到在“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”
我感谢任何人能给我提供的支持。
您可以使用JOIN进行UPDATE操作:https://www.mysqltutorial.org/mysql-update-join/