將同一張表中與ID相符的欄位的值設為NULL
P粉463811100
P粉463811100 2024-01-10 17:12:11
0
1
454

我正在處理帶有多個列的住房資料。在清理過程中,我注意到在「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;
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板