【发布时间】:2010-08-10 20:40:05
【问题描述】:
正在寻找一种优雅的方法来解决这个问题...
DECLARE @ZIP INT
SET @ZIP = 55555
IF @ZIP = ALL(SELECT ZIP FROM PEOPLE WHERE PERSONTYPE = 1)
PRINT 'All people of type 1 have the same zip!'
ELSE
PRINT 'Not All people of type 1 have the same zip!'
问题在于,如果 (SELECT ZIP FROM PEOPLE WHERE PERSONTYPE = 1) 不返回任何记录,则上述 IF 的计算结果为 true。当 ALL 的子查询没有返回任何记录时,我正在寻找一种方法来使其评估为 false。
我目前的解决方案:
DECLARE @ZIP INT
SET @ZIP = 55555
DECLARE @ALLZIPS TABLE (INT ZIP)
INSERT INTO @ALLZIPS
SELECT ZIP FROM PEOPLE WHERE PERSONTYPE = 1
IF EXISTS(SELECT TOP 1 * FROM @ALLZIPS) AND (@ZIP = ALL (SELECT ZIP FROM @ALLZIPS))
PRINT 'All people of type 1 have the same zip!'
ELSE
PRINT 'Not All people of type 1 have the same zip!'
【问题讨论】:
-
MS SQL Server(T-SQL 标准)
标签: sql sql-server tsql