用于检查SQL Server中组中是否存在确切ID的逻辑
发布时间:2020-12-12 06:33:40 所属栏目:MsSql教程 来源:网络整理
导读:我有一些样本数据,如: INSERT INTO mytable ([ID],[FK_ID],[TYPE_ID])VALUES (1,10,1),(2,11,(3,2),(4,12,(5,(6,3),(7,14,(8,3) 现在,我在这里尝试通过FK_ID检查每个组中是否具有TYPE_ID值1和的完全匹配. 2. 所以,预期的输出是这样的: (1,1)这应该失败 在FK
我有一些样本数据,如:
INSERT INTO mytable ([ID],[FK_ID],[TYPE_ID]) VALUES (1,10,1),(2,11,(3,2),(4,12,(5,(6,3),(7,14,(8,3) 现在,我在这里尝试通过FK_ID检查每个组中是否具有TYPE_ID值1和&的完全匹配. 2. 所以,预期的输出是这样的: >(1,1)这应该失败 >在FK_ID组中,我们只有一条记录 >(2,2)这应该通过 >在FK_ID组中,我们有两条记录. >(4,3)这也应该失败 >因为我们在这里有3条记录. >(7,3)这也应该失败 >即使我们有两个确切的记录,它也应该失败,因为这里的TYPE_ID与1& 2个值. 这是我的尝试: select * from mytable t1 where exists (select count(t2.TYPE_ID) from mytable t2 where t2.FK_ID = t1.FK_ID and t2.TYPE_ID in (1,2) group by t2.FK_ID having count(t2.TYPE_ID) = 2); 这没有按预期工作,因为它也传递FK_ID = 12,它有三个记录. 演示:SQL Fiddle 解决方法这可能有几种不同的方法.一个可能是:SELECT FK_ID FROM mytable GROUP BY FK_ID HAVING COUNT(*) = 2 AND MIN(TYPE_ID) = 1 AND MAX(TYPE_ID) = 2 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |