sql - SELECT * FROM 存在 IF EXISTS 的子查询
问题描述
似乎无法弄清楚这一点。
该表OrganizationUserSettings
有两行SettingSys
is3
和OrganizationSys
is 1012
。
总会有一行为OrgUserSettingsProfileSys
空。可能有一行(或多行)它有一个值。
给定一个参数@OrgUserSettingsProfileSys
,我需要一个匹配的行(如果存在)。如果没有,那么我需要它为空的行。
SELECT * FROM
(
IF EXISTS (Select * FROM OrganizationUserSettings WHERE OrgUserSettingsProfileSys = @OrgUserSettingsProfileSys)
BEGIN
SELECT * FROM OrganizationUserSettings WHERE OrgUserSettingsProfileSys = @OrgUserSettingsProfileSys
END
ELSE
BEGIN
SELECT * FROM OrganizationUserSettings WHERE OrgUserSettingsProfileSys IS NULL
END
)
WHERE SettingSys = 3 AND OrganizationSys = 1012
有了这个,我得到
'IF' 附近的语法不正确
编辑:
为了在此处发布,我已简化此查询。我需要这成为子查询的一部分。
解决方案
SELECT top 1 *
FROM OrganizationUserSettings
WHERE SettingSys = 3 AND OrganizationSys = 1012
and (OrgUserSettingsProfileSys = @OrgUserSettingsProfileSys or OrgUserSettingsProfileSys is NULL)
order by OrgUserSettingsProfileSys desc