Définissez la valeur de la colonne dans la même table qui correspond à l'ID sur NULL
P粉463811100
P粉463811100 2024-01-10 17:12:11
0
1
468

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粉463811100
P粉463811100

répondre à tous(1)
P粉639667504

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;
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal