2011-11-18 100 views
0
delete N.* from Tbl_Nodes N, Data_Tree DT WHERE N.Part = DT.Part 

此命令我得到以下错误。Sqlite删除查询错误

System.Data.SQLite.SQLiteException: SQLite error near "N": syntax error 

上述命令适用于MSAccess。

在Sqlite中使用表格快捷方式是否有其他选择?

+0

这是一些非标准的SQL。 WHERE N.Part是什么意思,以及Tbl_Nodes和Data_Tree如何相关? –

+0

查询更新... – Sandip

回答

4

DELETE语句在单个表上运行,不使用表别名。因此,您的FROM子句必须为FROM Tbl_Nodes

你可能在寻找:

delete from Tbl_Nodes WHERE Part IN (SELECT Part FROM Data_Tree) 

注意,这将在Data_Tree有相应的Part值,但不会从Data_Tree删除任何记录本身Tbl_Nodes删除所有节点。

尽管SQL在供应商中有所不同,但作为一般原则,从MS Access学习SQL并尝试将其应用于其他产品是一个错误。 MS Access具有一些非标准的结构。

+0

+1是迄今为止唯一的解决方案,甚至有可能是正确的(与语法错误相反)SQLite在其大部分语法中更贴近SQL标准比大多数数据库。 –

0

使用表的别名?

FROM table AS t1 
+0

在“N”附近没有仍然给出错误的SQLite错误:语法错误 – Sandip

-1

你错过了一下你的SQL语句有我猜,但它不能正常工作,如果你只是说:

delete N from Tbl_Nodes N, Data_tree DT WHERE...(rest of statement)

我只是删除了*

+0

它仍然给出错误:...错误附近“N”:语法错误 – Sandip

+0

从我在sqlite网站上发现,似乎在做您可以在其他数据库产品中进行连接删除,但不受支持。 Larry Lustig的答案应该适合你。 –

+0

是Larry解决方案适用于我...感谢 – Sandip