Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql WHERE子句未按预期运行_Sql_Sql Server - Fatal编程技术网

Sql WHERE子句未按预期运行

Sql WHERE子句未按预期运行,sql,sql-server,Sql,Sql Server,我正在尝试连接一些表以接收一些数据,但它没有按预期工作。我的问题是: SELECT USR.PK_User AS PKUser ,USR.NAME AS NAME FROM [User] USR LEFT JOIN aspnet_Users ASPU ON USR.NAME = ASPU.UserName LEFT JOIN aspnet_UsersInRoles ASPUIR ON ASPU.UserId = ASPUIR.UserId WHERE ASPUIR.RoleId = 'E

我正在尝试连接一些表以接收一些数据,但它没有按预期工作。我的问题是:

SELECT USR.PK_User AS PKUser
    ,USR.NAME AS NAME
FROM [User] USR
LEFT JOIN aspnet_Users ASPU ON USR.NAME = ASPU.UserName
LEFT JOIN aspnet_UsersInRoles ASPUIR ON ASPU.UserId = ASPUIR.UserId
WHERE ASPUIR.RoleId = 'E8700479-902A-42F1-A500-4FA02CAC356C'
此查询未返回任何内容。但如果我这样做:

SELECT * FROM [aspnet_UsersInRoles] WHERE RoleId = 'E8700479-902A-42F1-A500-4FA02CAC356C'
我选择了76行。如果我这样做:

SELECT USR.PK_User AS PKUser
    ,USR.NAME AS NAME
FROM [User] USR
LEFT JOIN aspnet_Users ASPU ON USR.NAME = ASPU.UserName
LEFT JOIN aspnet_UsersInRoles ASPUIR ON ASPU.UserId = ASPUIR.UserId
我返回了预期的行。此外,如果我添加:

WHERE ASPUIR.RoleId IS NULL 
我又被吵醒了


我做错了什么?

您需要的是ON而不是WHERE中的条件

否则,您只需将其有效地恢复为内部联接

SELECT USR.PK_User AS PKUser,
       USR.NAME    AS NAME
FROM   [User] USR
       LEFT JOIN aspnet_Users ASPU
         ON USR.NAME = ASPU.UserName
       LEFT JOIN aspnet_UsersInRoles ASPUIR
         ON ASPU.UserId = ASPUIR.UserId
            AND ASPUIR.RoleId = 'E8700479-902A-42F1-A500-4FA02CAC356C' 

你需要的是“在哪里”,而不是“在哪里”

否则,您只需将其有效地恢复为内部联接

SELECT USR.PK_User AS PKUser,
       USR.NAME    AS NAME
FROM   [User] USR
       LEFT JOIN aspnet_Users ASPU
         ON USR.NAME = ASPU.UserName
       LEFT JOIN aspnet_UsersInRoles ASPUIR
         ON ASPU.UserId = ASPUIR.UserId
            AND ASPUIR.RoleId = 'E8700479-902A-42F1-A500-4FA02CAC356C' 
试试这个:-

SELECT USR.PK_User AS PKUser,
   USR.NAME    AS NAME
FROM   [User] USR
   LEFT JOIN aspnet_Users ASPU
     ON USR.NAME = ASPU.UserName
   LEFT JOIN aspnet_UsersInRoles ASPUIR
     ON ASPU.UserId = ASPUIR.UserId
        AND ASPUIR.RoleId = 'E8700479-902A-42F1-A500-4FA02CAC356C' 
试试这个:-

SELECT USR.PK_User AS PKUser,
   USR.NAME    AS NAME
FROM   [User] USR
   LEFT JOIN aspnet_Users ASPU
     ON USR.NAME = ASPU.UserName
   LEFT JOIN aspnet_UsersInRoles ASPUIR
     ON ASPU.UserId = ASPUIR.UserId
        AND ASPUIR.RoleId = 'E8700479-902A-42F1-A500-4FA02CAC356C'