首页 > 解决方案 > SQL 在 SQL 查询中创建“Admin”(WHERE 子句中的 CASE/IF)

问题描述

这是我的 SQL:

WHERE 
CASE 
    WHEN (UC.USER = SESSION_USER() AND UC.full_access = 1) 
    THEN (FROS.IsVoided = false) 
    ELSE (FROS.IsVoided = false AND UC.USER = SESSION_USER()) 
END

我需要 IF user = to (current session user) and full_access = 1 the display X else Y,我可以提供更多代码和表格,但从总体上看,有人能找到我做过的任何常见错误吗?

或者我有这个想法:

WHERE 
IF(UC.USER = SESSION_USER() AND UC.full_access= 1, FROS.IsVoided = false, FROS.IsVoided = false AND UC.USER = SESSION_USER())

在WHERE子句中使用 if 语句的正确方法是什么?

解决方案:

WHERE IF(((SELECT full_access FROM `TABLE` WHERE user = SESSION_USER())= 1), (FROS.IsVoided = false), (FROS.IsVoided = false AND UC.USER = SESSION_USER()))

标签: sqlif-statementgoogle-bigquerycase

解决方案


您的问题的答案是SELECT查询部分中的一列:

SELECT (CASE WHEN UC.USER = SESSION_USER() AND UC.full_access = 1 
             THEN 'X' ELSE 'Y'
        END) as what_you_asked_for

我不知道这与您提供的代码有何关系。


推荐阅读