我有一张桌子GrowDaysLocation
。在这个表中,可以有两条关于DistrictId
和的记录RegionId
IE;
RegionId=1
和DistrictId = NULL
RegionId=1
和DistrictId = 1
我有一个条件,如果该行不存在,RegionId = 1 and DistrictId = 1
则获取RegionId = 1 and DistrictId = NULL
.
如何使用单个查询完成此操作?
以下是我尝试过的查询。
在这个查询中,我在 Where 子句中使用了 CASE 并使用子查询来找出行的存在,但问题是当我从 case 中返回 NULL 时,它不会返回任何行。
====================================================
SET ANSI_NULLS OFF
Select * From GrowDaysLocations
Where DistrictId =
( CASE WHEN (Select Count(*) From GrowDaysLocations
Where RegionId = '38D95A68-4A92-4D11-9A88-464CF1492880' AND DistrictId = 'F4B67A07-1BF7-42F5-9F19-77329A215D8B' AND
GrowDaysProfileId = '79F8BDBF-67D3-44A7-A790-1C10EE8B2AD0') > 0 THEN DistrictId
ELSE
NULL
END
)
AND RegionId = '38D95A68-4A92-4D11-9A88-464CF1492880' AND GrowDaysProfileId = '79F8BDBF-67D3-44A7-A790-1C10EE8B2AD0'
============================================