SQL Select,如果为空,则运行另一个select

时间:2018-09-13 10:21:55

标签: sql sql-server

我有一个查询,我必须选择一个ID,但是如果不存在,我将寻找另一个(具有相同值)。这两个ID是:

  • CartId
  • SessionId

我尝试过:

    SELECT TOP(1) CartId 
        FROM Cart 
        WHERE (UserId = @UserId)

if @@rowcount = 0
    SELECT TOP(1) CartId 
        FROM Cart 
        WHERE (SessionId = @SessionId)

如果不满足第一个条件,我会得到多个答案(第一个为空,第二个为标识)。答案必须唯一。

1 个答案:

答案 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)