使用 SQLITE3 中的联接更新问题(GOOGLE COLAB)

问题描述 投票:0回答:1

大家早上好

如果这个问题已得到解决,我深表歉意,我正在尝试运行以下查询。我复制了我的表以创建联接。

我已识别出表 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 作为更新后的表,且不丢失属性地址。

sql sqlite syntax-error google-colaboratory
1个回答
0
投票

您在

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 的行。

© www.soinside.com 2019 - 2024. All rights reserved.