Maison > Questions et réponses > le corps du texte
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粉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;