sqlite NEAR“.”;在UPDATE查询中使用联接时出现语法错误

thigvfpy  于 2022-11-14  发布在  SQLite
关注(0)|答案(1)|浏览(123)

我正在尝试在DBeaver中使用SQLite 3.39.3:

UPDATE Tbl_RawDataPART 
SET p.MessageClean = w.Vertaling, p.GedetecteerdeTaal = w.Taal
FROM Tbl_RawDataPART as p
INNER JOIN Tbl_WoordenNietVertalen as w ON p.message = w.Woord 
WHERE p.GedetecteerdeTaal  Is Null

我得到了:
SQL错误[1]:[SQLITE_ERROR]SQL错误或缺少数据库(NEAR“.”;语法错误)
Microsoft Access中的相同查询也适用:

UPDATE Tbl_RawDataPART INNER JOIN Tbl_WoordenNietVertalen 
ON Tbl_RawDataPART.message = Tbl_WoordenNietVertalen.Woord 
SET Tbl_RawDataPART.MessageClean = [Tbl_WoordenNietVertalen]![Vertaling], Tbl_RawDataPART.GedetecteerdeTaal = [Tbl_WoordenNietVertalen]![Taal]
WHERE (((Tbl_RawDataPART.GedetecteerdeTaal) Is Null));

DBeaver中的SELECT工作正常:

SELECT *
    FROM Tbl_RawDataPART as p
    INNER JOIN Tbl_WoordenNietVertalen as w ON p.message = w.Woord 
    WHERE p.GedetecteerdeTaal  Is Null

如果我执行UPDATE,我得到相同的错误:

UPDATE Tbl_RawDataPART 
SET p.MessageClean = "x" 
WHERE p.GedetecteerdeTaal is null
c8ib6hqw

c8ib6hqw1#

如果从SET子句的已更新列中删除p.限定符,则查询在语法上是正确的:

UPDATE Tbl_RawDataPART 
SET p.MessageClean = w.Vertaling, p.GedetecteerdeTaal = w.Taal
FROM Tbl_RawDataPART as p
INNER JOIN Tbl_WoordenNietVertalen as w ON p.message = w.Woord 
WHERE p.GedetecteerdeTaal  Is Null;

但是,我相信您不需要额外的联接到Tbl_RawDataPART
以下是在SQLite中使用UPATE...FROM语法编写Join-likeUPDATE语句的方法:

UPDATE Tbl_RawDataPART AS p
SET MessageClean = w.Vertaling, 
    GedetecteerdeTaal = w.Taal
FROM Tbl_WoordenNietVertalen AS w 
WHERE w.Woord = p.message AND p.GedetecteerdeTaal IS NULL;

相关问题