晕了,一个select 的参数问题
我用C#做开发,数据量很大,对一个表的操作有不少循环要处理,已经很费时间,某一步操作为了节省时间不再循环判断,把前面数据操作的内容,比如主键字段记录在一个字符串中并用“,”隔开,比如字符串为:“1,11,123,321,113,434,...”
然后直接用 select * from tb1 where ID not in (构造的字符串) 来过滤掉这些行。但是我的字符串里可能保存了几千上万个字符,在程序里运行出错,发现实际的字符串只截取了很少一部分,导致不完整。
是否select 语句not in 后的参数是有限制的,想想我的字符串里有上万的数据的话也确实不对劲。
有没有什么好的办法啊过滤掉这么多不要的数据,谢谢了!
------解决方案--------------------存入表中,再用连接试试
------解决方案--------------------确实有限制,SQL串最大长度是64KB。
建议把这些值保存到一个表中,每个值一行。
如:
字段名
1
11
123
...
然后用:
select * from 你的表名 where 字段名1 not in (select 字段名 from 表名)