我有一个要求,我需要检查SQL Server表的一列中是否存在IN
子句的所有值。
我怎样才能找到这个?
我正在尝试这样的事情。
IF NOT EXISTS (
SELECT NULL
FROM workflow_attributes
WHERE attribute_name IN (
'Mukund_Test_1'
,'Mukund_Test_2'
,'Mukund_Test_3'
)
)
BEGIN
PRINT 'not exist'
END
ELSE
BEGIN
PRINT 'exists'
END
答案 0 :(得分:3)
一种方法是使用GROUP BY
和COUNT()
(或COUNT(DISTINCT)
):
IF 3 = (SELECT COUNT(DISTINCT attribute_name)
FROM workflow_attributes
WHERE attribute_name IN ('Mukund_Test_1', 'Mukund_Test_2', 'Mukund_Test_3')
)
BEGIN
PRINT 'exists'
END
ELSE
BEGIN
PRINT 'not exists'
END
答案 1 :(得分:0)
Declare @tbl as table (attribute_name varchar(100))
insert into @tbl values ('Mukund_Test_1'),('Mukund_Test_2'),('Mukund_Test_3')
IF EXISTS (
SELECT 1
FROM workflow_attributes w left join @tbl t on w.attribute_name = t.attribute_name
WHERE t.attribute_name is null
)
BEGIN
PRINT 'not exist'
END
ELSE
BEGIN
PRINT 'exists'
END