金蝶面试题:SQL语句中IN从句部分涉及几千个子项怎么办? 执行select * from Tbl where col IN [几千条由or链接的条件子项]。系统回报错 stack overflow!这种问题有什么办法处理? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 做一个临时表col----data1data2data3然后去做JOIN操作. 把[几千条由or链接的条件子项]中的条件值先放入到表变量或临时表中, 假设表名为 #临时表, 字段为 Val 再连接查询, 这样的话, 就是几十万条也完成查询,几乎没有限制了. 语句如下select * from Tbl as z, #临时表 as t where z.col = t.Val 对啊,我们就是这样处理的,你把所有in的部分存储在临时表里,在left join一下就ok了 DECLARE @T TABLE(ID NVARCHAR(10))DECLARE @ID NVARCHAR(4000)-- IN部分转换到一张临时表SELECT @ID='SELECT '''+REPLACE('US,SS',',',''' UNION ALL SELECT ''')+''''INSERT @T EXEC(@ID)SELECT * FROM @T 在数据库中你用临时表如上。如果你是在程序中,是动态生成 select * from Tbl where col IN [几千条由or链接的条件子项] 这个SQL语句,建议or到一定数量 用union 支持把条件做在临时表,然后再用exists或join都可以。 都是临时表在做关联的in用的少的很,十个一下的int型才用 看看都是零时表了,C#我会放在 stringbuilder理 in本来就有很大的限制,只能f1 in (单列的组),如果想(f1,f2) in (双列的组),就不行了join就没有这个限制:x join y on x.f1=y.f1 and x.f2=y.f2 错误提示尚未注册 OLE DB 访问接口 "MICROSOFT.JET.OLEDB.4.0 "。 求sql command 交叉表, 用英语怎么说? 问一条SQL语句 ***求一SQL语句*** 数据库中已存在名为 'sp_AddUser' 的对象。对象 'sp_AddUser' 在数据库 'Perinfo' 中不存在。 SQL里如何拆分这样的字符串啊? 安装出错 sql问题,正点数据查询 請教關於SQL Server服務起動帳號???急! 查找字段的SQL怎么写? 简单问题,各位大牛快来抢分..
----
data1
data2
data3然后去做JOIN操作.
再连接查询, 这样的话, 就是几十万条也完成查询,几乎没有限制了. 语句如下select * from Tbl as z, #临时表 as t where z.col = t.Val
DECLARE @ID NVARCHAR(4000)-- IN部分转换到一张临时表
SELECT @ID='SELECT '''+REPLACE('US,SS',',',''' UNION ALL SELECT ''')+''''
INSERT @T EXEC(@ID)SELECT * FROM @T
如果你是在程序中,是动态生成 select * from Tbl where col IN [几千条由or链接的条件子项] 这个SQL语句,建议or到一定数量 用union
join就没有这个限制:x join y on x.f1=y.f1 and x.f2=y.f2