日期:2014-05-18  浏览次数:20847 次

查询一串id是否在表中的语句怎么写?
一串由id 组成的字符串 '1,5,78,87,656,90' 
任何检查其中的每一个id 都在表table的 CMID列中?

------解决方案--------------------
SQL code
select count(*) from table where cmid in (1,5,78,87,656,90)

------解决方案--------------------
你的意思是一串ID都在表中?
------解决方案--------------------
string id = "1,5,78,87,656,90";
string sql = "select count(*) from table where cmid in ("+id+")";
------解决方案--------------------
判断select count(*) from table where cmid in (1,5,78,87,656,90)返回的是否是6,即是否是"1,5,78,87,656,90".Split(',').Length。当然前提是cmid在表中唯一。
------解决方案--------------------
给你个思路 一句话SQL不会 存储过程的话到可以
SQL code

1、//先用分组 查找你一串ID的数据 得到一个数据集
select ChannelID from dbo.Live_Rec_Task where ChannelID in(1,2,3) group by ChannelID
2、然后在程序里在判断下数据集与ID的数量 相等则true 反之则false

------解决方案--------------------
你可以选择 写存储过程 或者 SQL+程序判断。
------解决方案--------------------
探讨
string id = "1,5,78,87,656,90";
string sql = "select count(*) from table where cmid in ("+id+")";

------解决方案--------------------
探讨

这是返回有几个在表中
而不是检查是否全部在表中

------解决方案--------------------
这个意思么:

DECLARE @sql varchar(4000)
SET @sql = 'IF EXISTS(SELECT 1 FROM table WHERE CMID IN('+'1,5,78,87,656,90'+'))'
+ ' PRINT 1 '
+ 'ELSE'
+ ' PRINT 0 '
EXEC (@sql)
------解决方案--------------------
跟上面的思路一样,已知了有多少个id了,用in查不出来总条数,跟你已知的id个数对比(前提是id是主键或自动增长的)如果条数是一样 证明全查出来了
------解决方案--------------------
SQL code

string a = "1,5,78,87,656,90";
string sql = "select count(1) from table where id in ("+a+")";

------解决方案--------------------
SQL code

IF ((SELECT count(id) FROM tb WHERE Id IN(4,101,102))!=(SELECT len('4,101,102')-len(replace('4,101,102',',',''))+1)) 
PRINT 'false' 
ELSE 
PRINT 'true'