我有一个查询,我必须选择一个ID,但是如果不存在,我将寻找另一个(具有相同值)。这两个ID是:
我尝试过:
SELECT TOP(1) CartId
FROM Cart
WHERE (UserId = @UserId)
if @@rowcount = 0
SELECT TOP(1) CartId
FROM Cart
WHERE (SessionId = @SessionId)
如果不满足第一个条件,我会得到多个答案(第一个为空,第二个为标识)。答案必须唯一。
答案 0 :(得分:2)
您可以将其合并为一个查询:
SELECT TOP(1) CartId
FROM Cart
WHERE UserId = @UserId OR SessionId = @SessionId
ORDER BY (CASE WHEN UserId = @UserId THEN 1 ELSE 2 END)