我是mysql的新手,我一直在嘗試按照一些教程進行操作,但我遇到了一些錯誤
。UPDATE a
SET PropertyAddress = IFNULL(a.PropertyAddress,b.PropertyAddress)
FROM nashvillehousing a
JOIN nashvillehousing b
ON a.ParcelID = b.ParcelID
and a.UniqueID <>/span> b.UniqueID
在這里,我試圖用同一表中的相同列重新填充a的PropertyAddress列。但是它顯示了一個錯誤:"FROM在這個位置無效,期待EOF,';'"
我檢查了其他的解決方案,并在此基礎上進行了調整。
我檢查了其他的解決方案,并將我的查詢修改為
UPDATE nashvillehousing a
JOIN nashvillehousing b
ON a.ParcelID = b.ParcelID
SET a.PropertyAddress = IFNULL(a.PropertyAddress,b.PropertyAddress))
and a.UniqueID <>/span> b.UniqueID
并且它回傳
Error Code: 2013.在查詢程序中失去連接到MySQL服務器 30.000秒
有誰能幫我解決這個問題嗎? 謝謝
uj5u.com熱心網友回復:te and should be a where clause
UPDATE nashvillehousing a
JOIN nashvillehousing b
ON a.ParcelID = b.ParcelID
SET a.PropertyAddress = COALESCE(a.PropertyAddress,b.PropertyAddress)
WHERE a.UniqueID <>/span> b.UniqueID
或者你在連接中放入
UPDATE nashvillehousing a
JOIN nashvillehousing b
ON a.ParcelID = b.ParcelID AND a.UniqueID <>/span> b.UniqueID
SET a.PropertyAddress = COALESCE(a.PropertyAddress,b.PropertyAddress)
uj5u.com熱心網友回復:
你沒有提供樣本資料,但是你的查詢有一個很大的問題,就是每個parcelId可能有多個匹配的有效地址。 為了避免這種情況,請將你要匹配的表匯總到:
UPDATE nashvillehousing n JOIN
(SELECT ParcelId, MAX(PropertyAddress) as PropertyAddress
FROM nashvillehousing n2
GROUP BY ParcelId
) n2
ON n2.ParcelID = n.ParcelID
SET PropertyAddress = n2.PropertyAddress
WHERE n.PropertyAddress IS NULL AND
n2.PropertyAddress IS NOT NULL。
注意那個WHERE子句只更新需要更新的行。
uj5u.com熱心網友回復:
你的第一個查詢沒有使用MySql語法,這就是為什么你得到了錯誤。
在第2個查詢中,你必須將條件a.UniqueID <> b.UniqueID放在ON子句中。
另外,由于你只想更新PropertyAddress中null的值,你應該為它添加一個WHERE子句,并擺脫IFNULL():
UPDATE nashvillehousing a
JOIN nashvillehousing b
ON a.ParcelID = b.ParcelID AND a.UniqueID <>/span> b.UniqueID
SET a.PropertyAddress = b.PropertyAddress
WHERE a.PropertyAddress IS NULL AND b. PropertyAddress IS NOT NULL。
注意,如果UniqueID實際上是每一行的唯一ID,那么你根本不需要條件a.UniqueID <> b.UniqueID,因為這已經被WHERE子句照顧到了,相同行的匹配被過濾掉了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/320150.html
標籤:
