Where子句测试所有必须匹配的地方
Where clause testing where all must match
我有一个 table,其中包含字段 student_number 和一个已完成或未完成的完成标志。
我想写一个 where 子句,它允许我检查 select 是否有 3 个学号,并检查他们是否都已在已完成的字段中完成,但是都必须匹配。
知道我是怎么做到的吗?
可能你想要这样的东西:
where STUDENT.NUMBER in (34646, 57858, 48482) and COMPLETED = 'COMPLETED'
(根据您的评论)
DROP TABLE T;
CREATE TABLE T (ID INT, COMPLETED VARCHAR(20))
INSERT INTO T VALUES
(34646, 'COMPLETD'),(57858,'COMPLETeD'),(48482,'COMPLETED')
SELECT case when s.sta > 0 then 'NotAllCompleted'
else 'AllCompleted'
end
FROM
(
SELECT SUM(CASE WHEN COMPLETED <> 'COMPLETED' AND ID IN(34646,57858,48482) THEN 1 ELSE 0 END) sta
FROM T
) S
---------------
NotAllCompleted
(1 rows affected)
truncate table t
INSERT INTO T VALUES
(34646, 'COMPLETeD'),(57858,'COMPLETeD'),(48482,'COMPLETED')
SELECT case when s.sta > 0 then 'NotAllCompleted'
else 'AllCompleted'
end
FROM
(
SELECT SUM(CASE WHEN COMPLETED <> 'COMPLETED' AND ID IN(34646,57858,48482) THEN 1 ELSE 0 END) sta
FROM T
) S
---------------
AllCompleted
(1 rows affected)
我有一个 table,其中包含字段 student_number 和一个已完成或未完成的完成标志。
我想写一个 where 子句,它允许我检查 select 是否有 3 个学号,并检查他们是否都已在已完成的字段中完成,但是都必须匹配。
知道我是怎么做到的吗?
可能你想要这样的东西:
where STUDENT.NUMBER in (34646, 57858, 48482) and COMPLETED = 'COMPLETED'
(根据您的评论)
DROP TABLE T;
CREATE TABLE T (ID INT, COMPLETED VARCHAR(20))
INSERT INTO T VALUES
(34646, 'COMPLETD'),(57858,'COMPLETeD'),(48482,'COMPLETED')
SELECT case when s.sta > 0 then 'NotAllCompleted'
else 'AllCompleted'
end
FROM
(
SELECT SUM(CASE WHEN COMPLETED <> 'COMPLETED' AND ID IN(34646,57858,48482) THEN 1 ELSE 0 END) sta
FROM T
) S
---------------
NotAllCompleted
(1 rows affected)
truncate table t
INSERT INTO T VALUES
(34646, 'COMPLETeD'),(57858,'COMPLETeD'),(48482,'COMPLETED')
SELECT case when s.sta > 0 then 'NotAllCompleted'
else 'AllCompleted'
end
FROM
(
SELECT SUM(CASE WHEN COMPLETED <> 'COMPLETED' AND ID IN(34646,57858,48482) THEN 1 ELSE 0 END) sta
FROM T
) S
---------------
AllCompleted
(1 rows affected)