大家早上好
如果这个问题已得到解决,我深表歉意,我正在尝试运行以下查询。我复制了我的表以创建联接。
我已识别出表 A 中的空属性地址(表 A 中的 28 个单元格缺少属性地址)。然后我希望通过将表 A 连接到表 B 来插入 PropertyAddress 表 B 中的地址。
虽然连接表A和表B的查询运行正确,但由于操作错误,我无法更新表。
我能够成功运行:
%%sql
SELECT A1.PropertyAddress, A1.ParcelID, B2.PropertyAddress, B2.ParcelID, IFNULL(A1.PropertyAddress, B2.PropertyAddress)
FROM Nashvillehousing A1
JOIN Nashvillehousing B2
ON A1.ParcelID = B2.ParcelID
AND A1.UniqueID <> B2.UniqueID
WHERE A1.PropertyAddress IS NULL
但是,我无法运行以下命令:
(sqlite3.OperationalError) no such table: A1
[SQL: UPDATE A1
SET PropertyAddress = IFNULL(A1.PropertyAddress, B2.PropertyAddress)
FROM Nashvillehousing as A1
JOIN Nashvillehousing as B2
ON A1.ParcelID = B2.ParcelID
AND A1.UniqueID <> B2.UniqueID
WHERE A1.PropertyAddress IS NULL]
我感谢任何意见!
我尝试了不同的别名、句点、下划线,但是 UPDATE 查询仍然无法识别我的别名表。
我希望将丢失的值从表 B2 插入表 A1 作为更新后的表,且不丢失属性地址。
您在
UPDATE
语句中使用 SQL Server 语法进行联接。SQLite的正确语法是:
UPDATE Nashvillehousing AS A1
SET PropertyAddress = B2.PropertyAddress
FROM Nashvillehousing AS B2
WHERE A1.ParcelID = B2.ParcelID AND A1.UniqueID <> B2.UniqueID AND A1.PropertyAddress IS NULL;
此外,我将 IFNULL(A1.PropertyAddress, B2.PropertyAddress)
更改为
B2.PropertyAddress
,因为
WHERE
子句仅返回
PropertyAddress
中包含 null 的行。