我的查询就像
Select * From T Where ID=1 AND ID=2 AND ID=3 And So On
这些来自另一个结果集中的ID,例如Select ID From T2
如果我在操作SELECT * From T Where ID IN(1,2,3)
中应用,它显示是否有1或2或3的任何条目,但在我的要求中,它们应为ID 1 AND 2 AND 3
表示ID为1,2,3,如果2不存在,结果应为空
如何应用此查询。
1,2,3来自另一个结果集,所以我不能直接使用,这意味着我不能使用where ID=1 AND ID=2 AND So On
答案 0 :(得分:0)
尝试一下
SELECT * From T Where ID IN(Select ID From T2 where ID is not NULL)
答案 1 :(得分:0)
您的条件Where ID=1 AND ID=2 AND ID=3
永远不会获取任何记录,因为每一行的ID
列只能容纳1个值,可以是1
或2
或3
,但不是全部。
理想情况下,您的查询应该像
Select * From T Where ID=1 OR ID=2 OR ID=3
以上查询等同于
SELECT * From T Where ID IN(1,2,3)
如果要获取另一个表中存在id的记录,则可以通过多种方式
1- EXISTS
Select * From T t1
Where exists
(
select 1 from t2 as t2 where t2.id=t1.id
)
2-使用IN
Select * From T t1
where id in
(
select id from t2
)
答案 2 :(得分:0)
该条件适用于每一行。每行只有一个ID。因此ID不能等于1等于2等于3。您需要使用OR。
where ID=1 OR ID=2 OR ID=3
答案 3 :(得分:0)
您需要按照以下步骤进行操作:
SELECT *
FROM t
WHERE id IN (SELECT id FROM t2)
AND EXISTS (
SELECT 1
FROM t
WHERE id IN (SELECT id FROM t2)
HAVING COUNT(DISTINCT id) = (SELECT COUNT(DISTINCT id) FROM t2)
)
如果t
包含t2
中存在的所有ID,它将返回行。
答案 4 :(得分:0)
DECLARE @c2 INT
SELECT DISTINCT @c2 = COUNT(id) FROM T2
DECLARE @c1 INT
SELECT DISTINCT @c1 = COUNT(T.id) FROM T JOIN T2 on T.id=T2.id
SELECT * FROM T WHERE @c1 = @c2