cari

Rumah  >  Soal Jawab  >  teks badan

Tetapkan nilai ID padanan lajur dalam jadual yang sama kepada NULL

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粉463811100P粉463811100325 hari yang lalu446

membalas semua(1)saya akan balas

  • P粉639667504

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

    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;

    balas
    0
  • Batalbalas