Objective c FMDatabase在“不在”方面有问题吗?还是iPhone上的SQLite不支持它?

Objective c FMDatabase在“不在”方面有问题吗?还是iPhone上的SQLite不支持它?,objective-c,cocoa-touch,fmdb,Objective C,Cocoa Touch,Fmdb,我面临着一个严重的数据库问题。我使用的查询如下所示 SELECT * FROM `article` WHERE `alias` NOT IN ('example_alias') 我之所以使用“NOT IN”,是因为可能有一个要排除的别名列表,而不是“example_alias”。但奇怪的是,这个查询的结果包含了所有别名为我想要排除的记录。所以FMDatbase选择了错误的记录。如果我将此查询复制并粘贴到SQLite数据库浏览器中,并在那里执行,则查询将正确完成。 如果我删除“in”前面的“NO

我面临着一个严重的数据库问题。我使用的查询如下所示

SELECT * FROM `article` WHERE `alias` NOT IN ('example_alias')
我之所以使用“NOT IN”,是因为可能有一个要排除的别名列表,而不是“example_alias”。但奇怪的是,这个查询的结果包含了所有别名为我想要排除的记录。所以FMDatbase选择了错误的记录。如果我将此查询复制并粘贴到SQLite数据库浏览器中,并在那里执行,则查询将正确完成。 如果我删除“in”前面的“NOT”,则SQLite数据库浏览器将向我显示具有给定别名的所有记录,并且,正如预期的那样,FMDatabase将向我显示不带别名的所有记录。。。 在下一步中,我想用DELETE替换SELECT,但是如果保留了所有不需要的记录,并且删除了我想要保留的记录,那么这确实会造成伤害。
这是FMDatabase的已知错误还是我正在使用libsqlite3.dylib的底层SQLite框架,还是我做错了什么?

在foxpro中,子查询需要指定为另一个sql select语句。。从别名不在的文章中选择*从“示例\u别名”中选择*
这可能是解决方案吗?

SQLite肯定处理不正确,我不敢相信FMDB会出现如此根本性的错误。你能给出文章的DDL语句,以及内容的DML语句吗?经过几个小时的反复尝试,我终于发现了我的错误。与其说是一个错误,不如说是一个对机制如何运作的误解。我用的是什么?在我的查询中,使别名列表更具动态性。我通过添加逗号分隔的字符串并修剪最后一个逗号来建立这个列表。最后,字符串看起来像'alias1','alias2','alias3'。此字符串是为?插入的?。但是,有什么机制来取代这一机制呢?它的指定内容包括一些转义功能,这些转义功能将我的值字符串列表作为单个值进行处理,因此没有这个大别名字符串的所有记录都会被返回。您的提示不是我问题的答案,而是给了我一个有用的提示,告诉我可以将尝试引向哪个方向。作为对你回答的回应,我试着用另一种方式把清单插入括号内,而不是用通常的方式?。这导致了预期的结果。好的,你能给我看看你最终得到的代码吗!谢谢。NSString*别名列表=[NSString stringWithString:@];2.在for循环中,别名列表=[aliasList stringByAppendingFormat:@“@”、@next_alias];3.aliasList=[aliasList StringByReplacingCharactersRange:NSMakeRange[aliasList length]-1,带字符串的1:@];4.[db executeUpdate:[NSString stringWithFormat:@DELETE FROM article,其中type=?和菜单不在%@中,别名列表],[NSNumber numberwhithint:type_article];