我有一个名为“ Student”的表,其中包含以下数据。
我必须编写查询表,检查是否存在StudentName“ RAM”但不存在“ SHYAM”的查询,然后执行其他操作。
IF EXISTS (SELECT 1 FROM Student WHERE StudentName = 'RAM' AND StudentName <> 'SHYAM')
BEGIN
PRINT 'DO SOMETHING'
END
ELSE
BEGIN
PRINT 'DO SOMETHING ELSE'
END
显然,以上查询无法正常工作。但是我编写了查询以更好地了解需求。
您可以过滤您关心的两个名称,然后检查MAX
(按字母顺序排列的最后一个)是RAM
,因此没有SHYAM
记录
IF EXISTS (SELECT 1
FROM Student
WHERE StudentName IN ( 'RAM', 'SHYAM' )
HAVING MAX(StudentName) = 'RAM')
BEGIN
PRINT 'DO SOMETHING'
END
ELSE
BEGIN
PRINT 'DO SOMETHING ELSE'
END
如果这些值是动态的,并且在编写查询时不知道您要确保存在的值是可以使用的按字母顺序排列的最后一个,则>]
HAVING MAX(StudentName) = 'RAM'AND MIN(StudentName) = 'RAM'
或者您可以使用
EXCEPT
IF EXISTS (SELECT 1
FROM Student
WHERE StudentName = 'RAM'
EXCEPT
SELECT 1
FROM Student
WHERE StudentName = 'SHYAM')
BEGIN
PRINT 'DO SOMETHING'
END
ELSE
BEGIN
PRINT 'DO SOMETHING ELSE'
END
IF EXISTS (SELECT 1 FROM Student WHERE StudentName = 'RAM') AND NOT EXISTS (SELECT 1 FROM Student WHERE StudentName = 'SHYAM')
BEGIN
PRINT 'DO SOMETHING'
END
ELSE
BEGIN
PRINT 'DO SOMETHING ELSE'
END