假设我有下表:
ID Value
-- ----
1 1
1 1
1 0
2 1
2 1
让我们取 1 的 ID。我需要检查所有 1 的 ID 的值是否为 1。如果没有,我需要返回“N/A”。在这种情况下,由于第 3 行的值为 0,我需要返回 'N/A'
select * from tbl1 where ID = 1 and value = 1
不会完全做到。
我知道 SQL 有 ALL 关键字,但不知道在这种情况下如何使用它
假设我有下表:
ID Value
-- ----
1 1
1 1
1 0
2 1
2 1
让我们取 1 的 ID。我需要检查所有 1 的 ID 的值是否为 1。如果没有,我需要返回“N/A”。在这种情况下,由于第 3 行的值为 0,我需要返回 'N/A'
select * from tbl1 where ID = 1 and value = 1
不会完全做到。
我知道 SQL 有 ALL 关键字,但不知道在这种情况下如何使用它
DECLARE @id INT;
SET @id = 1;
SELECT CASE
WHEN EXISTS (SELECT 1 FROM dbo.tablename WHERE ID = @id AND Value <> 1) THEN 'N/A'
WHEN EXISTS (SELECT 1 FROM dbo.tablename WHERE ID = @id) THEN 'All are equal to 1'
ELSE 'No values present with this ID.'
END
我假设您也在测试 ID = 2 那么值是否也 = 2 依此类推,即 ID = 值,如果是这样:
SELECT
ID,
Value,
CASE WHEN ID=Value THEN 'Equal' ELSE 'N/A' END AS TheStatus
FROM
MyTable