数据x存在,并且数据y不存在于表的同一列中

问题描述 投票:0回答:2

我有一个名为“ Student”的表,其中包含以下数据。

enter image description here

我必须编写查询表,检查是否存在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

显然,以上查询无法正常工作。但是我编写了查询以更好地了解需求。

sql-server database
2个回答
4
投票

您可以过滤您关心的两个名称,然后检查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 

0
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.