如何在SQL中应用AND操作

时间:2019-03-14 04:42:24

标签: sql-server

我的查询就像

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

5 个答案:

答案 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个值,可以是123,但不是全部。

理想情况下,您的查询应该像

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