Heim  >  Fragen und Antworten  >  Hauptteil

Setzen Sie den Wert der Spalte in derselben Tabelle, die der ID entspricht, auf NULL

Ich arbeite an Wohnungsdaten mit mehreren Spalten. Während des Reinigungsvorgangs ist mir aufgefallen, dass die Spalte „PropertyAddress“ einige Nullwerte enthält, und ich wollte bestätigen, ob diese Nullwerte mit der ParcelID abgeglichen werden können. Daher habe ich die folgende Abfrage geschrieben, um die vorherige Behauptung zu bestätigen und die Ergebnisse unterhalb der Abfrage anzuzeigen.

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;
Paket-ID Attributadresse Paket-ID Attributadresse
092 13 0 322,00 leer 092 13 0 322,00 237 37TH AVE N, Nashville
043 04 0 014.00 leer 043 04 0 014.00 112 HILLER DR, Nussbaum alt
026 05 0 017.00 leer 026 05 0 017.00 208 East Avenue, Goodlettville
042 13 0 075.00 leer 042 13 0 075.00 222 FOXBORO DR, Madison

Nachdem ich bestätigt habe, dass ich ParcelID verwenden kann, um den Nullwert in die richtige PropertyAddress zu ändern, habe ich die UPDATE-Abfrage geschrieben:

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

Aber es ist ein Fehler aufgetreten „Fehlercode: 1241. Operand sollte 1 Spalte(n) enthalten“

Also habe ich die Abfrage wie folgt umgeschrieben:

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

Aber der Fehler „Fehlercode: 1146. Tabelle 'nasville_housing.a' existiert nicht“

Abschließend schrieb ich:

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

Aber der Fehler „Fehlercode: 1146. Tabelle 'nasville_housing.a' existiert nicht“

Ich freue mich über jede Unterstützung, die mir jemand geben kann.

P粉463811100P粉463811100283 Tage vor417

Antworte allen(1)Ich werde antworten

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

    Antwort
    0
  • StornierenAntwort