如何在SQLServer2008中进行选择
有问题 埃克萨姆勒如何在SQLServer2008中进行选择,sql,sql-server-2008,Sql,Sql Server 2008,有问题 埃克萨姆勒 ID ID2 1 100 3 100 5 100 1 110 2 110 4 110 select * from table where ID in (1,4) ---executing not correctly select * from table where ID = '1' and ID = '4' ---not work 我需要ID2将“110”(选择具有
ID ID2
1 100
3 100
5 100
1 110
2 110
4 110
select * from table where ID in (1,4) ---executing not correctly
select * from table where ID = '1' and ID = '4' ---not work
我需要ID2将“110”(选择具有2个值ID的ID2)
谢谢。如果您的ID很少,您可以使用
存在的:
SELECT ID, ID2
FROM dbo.Table1 t1
WHERE EXISTS
(
SELECT 1 FROM dbo.Table1 t2
WHERE t2.ID=1 AND t2.ID2=t1.ID2
)
AND EXISTS
(
SELECT 1 FROM dbo.Table1 t2
WHERE t2.ID=4 AND t2.ID2=t1.ID2
)
AND ID IN (1, 4)
这将返回具有相同ID2且ID=1和ID=4的两条记录
ID ID2
1 110
4 110
您希望得到什么结果?是否需要具有多个对应ID2的ID?或者您需要计数大于1的ID2?@jim我需要具有大于1个对应ID的IDID2s@user2943856看到下面的新答案谢谢大家,现在它起作用了,但是OP在两种方法中使用的ID1
和4
在哪里?@TimSchmelter作者对这个问题的描述对我来说不够清楚。我以为他的1和4只是个例子。他在评论线程中的最后一个答案是“我需要具有多个对应ID2的ID”,所以我完成了这项工作。他可以很容易地在内部查询中添加任何过滤器。谢谢!太好了
SELECT ID FROM (
SELECT ID, COUNT(*) OVER(PARTITION BY ID2) as cnt FROM Table) t
WHERE t.cnt>1