2011-08-24 59 views
0

我有以下查询:SQLite的删除命令与子查询

SELECT * FROM (
    SELECT * FROM pojmovi WHERE pojam LIKE '%og' 
) WHERE pojam NOT LIKE '%olog'; 

可正常工作,所有这一切在“OG”,但最终列pojmovi选择不在“olog”,现在,我想删除这些结果,所以我想是这样的:

DELETE FROM (
    SELECT * FROM pojmovi WHERE pojam LIKE '%og' 
) WHERE pojam NOT LIKE '%olog'; 

而这个查询导致近“(”:语法错误 这在某种程度上可能在sqlite的

回答

2

这不可能如你所愿地工作 - 你试图从中间查询结果中删除,这是没有意义的,也是不允许的。您需要在DELETE FROM之后指定一个实际表格。事情是这样的:

DELETE FROM pojmovi WHERE (pojam LIKE '%og') AND (pojam NOT LIKE '%olog'); 
+0

感谢您的帮助和时间。 小实验后,我想出了这个查询不如预期,据我可以告诉大家,工作原理: 'DELETE FROM pojmovi WHERE ID IN( SELECT ID FROM( \t SELECT * FROM pojmovi WHERE pojam LIKE“% og' )WHERE pojam NOT LIKE'%olog' )' – realitylord

0

如何

SELECT * FROM pojmovi WHERE pojam LIKE '%og' and pojam NOT LIKE '%olog'; 

DELETE FROM pojmovi WHERE pojam LIKE '%og' and pojam NOT LIKE '%olog'; 

您的查询将是缓慢的,因为他们不能使用索引(因为你正在做LIKE“%... “)