SELECT
'IsActive' =
FROM Users u
INNER JOIN Permissions p ON u.Id = p.UserId
我需要在上面的查询中添加一些逻辑以获得与执行下面的操作相同的结果(这是伪代码)。
用案例陈述可能吗?
if(
(p.Approved &&
(p.secondaryApproval == null || (p.SecondaryApproval != null && p.secondaryApproval)
)
)
上面
if
语句中的逻辑用IsActive
确定应该为true。我可以在查询中以某种方式使用sql case语句
mimick
此逻辑吗? 最佳答案
像这样:
SELECT
CASE
WHEN p.Approved=1 AND (p.SecondaryApproval IS NULL OR p.SecondaryApproval=1) THEN 1
ELSE 0
END AS IsActive
FROM Users u
INNER JOIN Permissions p ON u.Id = p.UserId
请注意,在您的SQL和C#代码中,都不必在
p.SecondaryApproval
的另一侧测试OR
是否为空。关于sql - 如何使用sql case语句重新创建此逻辑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22917230/