带别名的SQLite更新

时间:2013-09-12 23:32:10

标签: sql sqlite

我正在尝试在SQLite中进行此更新:

UPDATE T_INPUT c SET (c.STATUS = 0, c.ERRORMSG='') where not c.ID in (SELECT a.ID FROM T_INPUT a, T_OUTPUT b where a.ID = b.FK_INPUT AND a.STATUS = 1)

当我跑步时,我的回报是:

[System.Data.SQLite] ErrorCode: 1
ErrorMessage: SQL logic error or missing database
near "c": syntax error

但为什么呢?这里没有错。

我尝试使用T_INPUT.ID而不是“c”,但它也没有用。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

UPDATE T_INPUT c SET (...)

在UPDATE语句中,SQLite似乎不支持该表别名或(围绕SET值的parens)。 See their official syntax documentation.

如果我像这样更改你的查询,我至少会得到SQLite抱怨表不存在:

UPDATE T_INPUT 
SET 
    STATUS = 0, 
    ERRORMSG='' 
where T_INPUT.ID in (
    SELECT a.ID 
    FROM T_INPUT a, 
    T_OUTPUT b 
    where a.ID = b.FK_INPUT 
    AND a.STATUS = 1
);

结果:Error: no such table: T_INPUT

如果没有看到更多内容,很难说更多,例如数据库架构或SQL Fiddle示例。