我正在尝试在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”,但它也没有用。
任何人都可以帮助我吗?
答案 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示例。