recherche

Maison  >  Questions et réponses  >  le corps du texte

Définissez la valeur de la colonne dans la même table qui correspond à l'ID sur NULL

Je travaille sur des données de logement avec plusieurs colonnes. Pendant le processus de nettoyage, j'ai remarqué qu'il y avait des valeurs Null dans la colonne "PropertyAddress", et je souhaite confirmer si ces valeurs Null peuvent correspondre au ParcelID. Par conséquent, j'ai écrit la requête suivante pour confirmer l'assertion précédente et afficher les résultats sous la requête.

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 du colis Adresse d'attribut ID du colis Adresse d'attribut
092 13 0 322.00 vide 092 13 0 322.00 237 37TH AVE N, Nashville
043 04 0 014.00 vide 043 04 0 014.00 112 HILLER DR, vieux noyer
026 05 0 017.00 vide 026 05 0 017.00 208 Avenue Est, Goodlettville
042 13 0 075.00 vide 042 13 0 075.00 222 FOXBORO DR, Madison

Après avoir confirmé que je peux utiliser ParcelID pour remplacer la valeur Null par la bonne PropertyAddress, j'ai écrit la requête 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);

Mais une erreur s'est produite « Code d'erreur : 1241. L'opérande doit contenir 1 colonne(s) »

Donc, j'ai réécrit la requête comme :

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

Mais l'erreur « Code d'erreur : 1146. La table 'nasville_housing.a' n'existe pas »

Finalement, j'ai écrit :

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

Mais l'erreur « Code d'erreur : 1146. La table 'nasville_housing.a' n'existe pas »

J'apprécie tout le soutien que quelqu'un peut m'apporter.

P粉463811100P粉463811100327 Il y a quelques jours455

répondre à tous(1)je répondrai

  • P粉639667504

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

    Vous pouvez utiliser JOIN pour les opérations 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;

    répondre
    0
  • Annulerrépondre