首頁  >  問答  >  主體

將同一張表中與ID相符的欄位的值設為NULL

我正在處理帶有多個列的住房資料。在清理過程中,我注意到在「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粉463811100P粉463811100283 天前427

全部回覆(1)我來回復

  • P粉639667504

    P粉6396675042024-01-11 11:00:51

    您可以使用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;

    回覆
    0
  • 取消回覆