Tetapkan nilai ID padanan lajur dalam jadual yang sama kepada NULL
P粉463811100
P粉463811100 2024-01-10 17:12:11
0
1
449

Saya sedang mengusahakan data perumahan dengan berbilang lajur. Semasa proses pembersihan, saya perhatikan bahawa terdapat beberapa nilai Null dalam lajur "PropertyAddress", dan saya ingin mengesahkan sama ada nilai Null ini boleh dipadankan dengan ParcelID. Oleh itu, saya menulis pertanyaan berikut untuk mengesahkan pernyataan sebelumnya dan memaparkan keputusan di bawah pertanyaan.

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 Pakej Alamat atribut ID Pakej Alamat atribut
092 13 0 322.00 kosong 092 13 0 322.00 237 37TH AVE N, Nashville
043 04 0 014.00 kosong 043 04 0 014.00 112 HILLER DR, walnut lama
026 05 0 017.00 kosong 026 05 0 017.00 208 East Avenue, Goodlettville
042 13 0 075.00 kosong 042 13 0 075.00 222 FOXBORO DR, Madison

Selepas mengesahkan bahawa saya boleh menggunakan ParcelID untuk menukar nilai Null kepada PropertyAddress yang betul, saya menulis pertanyaan KEMASKINI:

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);

Tetapi ralat berlaku "Kod Ralat: 1241. Operand harus mengandungi 1 lajur"

Jadi, saya menulis semula pertanyaan sebagai:

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

Tetapi ralat "Kod Ralat: 1146. Jadual 'nasville_housing.a' tidak wujud"

Akhirnya, saya menulis:

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);

Tetapi ralat "Kod Ralat: 1146. Jadual 'nasville_housing.a' tidak wujud"

Saya menghargai sebarang sokongan yang boleh diberikan oleh sesiapa sahaja kepada saya.

P粉463811100
P粉463811100

membalas semua(1)
P粉639667504

Anda boleh menggunakan JOIN untuk operasi KEMASKINI: 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;
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan