Bob*_*t88 4 sql sql-server-2008
我有以下代码段:
WHERE (Person.WorkGroupId = 2 or Person.RoleId = 2)
Run Code Online (Sandbox Code Playgroud)
我想要发生的是WorkGroupId在Person表上返回第一个出现的2.但是,如果没有a的人为WorkgroupId2,则RoldId在Person表中选择第一个出现2的人.
谢谢
Lam*_*mak 12
SELECT TOP (1) * FROM
(
SELECT TOP (1) *, o = 1
FROM Person
WHERE WorkGroupId = 2
UNION ALL
SELECT TOP (1) *, o = 2
FROM Person
AND RoleId = 2
) AS x ORDER BY o;
Run Code Online (Sandbox Code Playgroud)
如果你只使用那个,你会得到多个记录.
我会这样做:(有问题的表只扫描一次)
Select top 1 *
From dbo.SomeTable
where WorkGroupId=2 or RoleId=2
Order by case
when WorkGroupId=2 then 1
when RoleId=2 then 2
end
Run Code Online (Sandbox Code Playgroud)