Mysql 返回所有行都符合条件的值

Mysql 返回所有行都符合条件的值,mysql,sql,sql-server,Mysql,Sql,Sql Server,我正在处理一个SQL查询,以返回有权访问同一存储的用户列表。存储设置为需要一个区域和一个状态。如果Store、State和Region为NULL,并且“Access”不为NULL,则用户具有对所有存储的完全访问权限。例如 LocationID | UserID | StoreID | State | RegionID | Access | 1 1 NULL NULL NULL

我正在处理一个SQL查询,以返回有权访问同一存储的用户列表。存储设置为需要一个区域和一个状态。如果Store、State和Region为NULL,并且“Access”不为NULL,则用户具有对所有存储的完全访问权限。例如

LocationID  |  UserID  |   StoreID   |   State   |   RegionID   |   Access   |
    1            1          NULL         NULL          NULL           1
现在,如果用户拥有除存储123之外的完全访问权限,那么他们的表条目将具有此权限

LocationID  |  UserID  |   StoreID   |   State   |   RegionID   |   Access   |
    1            1          NULL         NULL          NULL           1
    2            1          123          NULL          NULL          NULL
这告诉软件他们有完全访问权限,但在存储123中,他们没有空访问权限

我要做的是选择所有有权访问特定商店的用户。我现在就有它,所以它把所有的用户ID都拉到了

StoreID IN (SELECT StoreID FROM @tblStores) 
OR RegionID IN (SELECT RegionID FROM @tblStores)
OR StateID IN (SELECT State FROM @tblStores)
这对于在StoreID、State或RegionID匹配的地方拉取所有用户来说都很好,并且检查访问权限是否不为NULL

我的问题是针对那些除了某个地方之外都可以完全访问的人。如果StoreId/State/RegionID为null,我如何选择一个用户,除非他们有另一个条目与store/State/RegionID匹配,并且access为null

所以现在,如果我运行查询试图查找存储123中的所有用户,它将返回UserID 1,因为UserID 1有一行,其中所有内容都为NULL,访问权限都不是NULL。我需要检查UserID1是否对storeid 123、State which或RegionID which有空访问权


有什么快速的方法可以做到这一点吗?有没有一种方法可以说只在所有条件都匹配的地方拉取UserID,是吗?

您需要添加如下内容:

而不是select from其中的userid=。。。并且访问是空的