代码之家  ›  专栏  ›  技术社区  ›  Jake Manet

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

  •  0
  • Jake Manet  · 技术社区  · 6 年前

    • 卡蒂德
    • 会话ID

    我试过:

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

    如果第一个条件不满足,我得到多个答案(第一个空,第二个标识)。答案必须是独一无二的。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Gordon Linoff    6 年前

    您可以将其合并到一个查询中:

    SELECT TOP(1) CartId 
    FROM Cart 
    WHERE UserId = @UserId OR SessionId = @SessionId
    ORDER BY (CASE WHEN UserId = @UserId THEN 1 ELSE 2 END)