我想执行以下操作:SQLite的:有多少参数可以有处于“在”子句
delete from images where image_address not in (<a long list>)
该列表能够维持多久? (我猜我可能不得不想另一种方式)。
我想执行以下操作:SQLite的:有多少参数可以有处于“在”子句
delete from images where image_address not in (<a long list>)
该列表能够维持多久? (我猜我可能不得不想另一种方式)。
如果您正在使用参数(?
),the maximum number is 999 by default。
如果您通过直接插入值来动态创建SQL语句(这对字符串来说是一件坏事),那么这样的列表的长度没有上限。但是,有a limit on the length of the entire SQL statement,默认为100万字节。
如果您不能保证您的查询没有超出这些限制,您必须使用临时表(请参阅LS_dev的答案)。
如果你有一个长长的清单,我建议两种方法:
解决方案一:
所有数据添加到临时表:
CREATE TEMP TABLE lng_list(image_address);
-- Insert all you elements in lng_list table
-- ...
DELETE FROM images WHERE image_address NOT IN (SELECT image_address FROM lng_list);
请务必使用这个内部交易取得良好的表现。
解决方法二:
(删除:仅适用于IN
,不NOT IN
...)
性能应该是任何这些解决方案的公平良好。
第二个解决方案对于'NOT IN'不起作用。 –
@CL。 UPS!!!你的权利! –
谢谢@LS_dev - 你的解决方案很有帮助。 (接受CL,因为他也回答了问题的其他部分)。 –
你是否也从数据库中获得该列表? –
其实我打算通过它,虽然我可以创建一个表 –
括号应该包含coloun名称 – preetam