Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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 如何检查一个表在另一个表中是否有匹配的记录?_Sql_Database_Sql Server 2008 R2 - Fatal编程技术网

Sql 如何检查一个表在另一个表中是否有匹配的记录?

Sql 如何检查一个表在另一个表中是否有匹配的记录?,sql,database,sql-server-2008-r2,Sql,Database,Sql Server 2008 R2,我有以下表格: 表1:AccessMenu userid item 1 a 2 b 2 c idAdmin itemCol 2 v 2 m 2 d 及 表2:ActionRights userid item 1 a 2 b 2 c idAdmin itemCol 2 v 2

我有以下表格:

表1:
AccessMenu

userid  item

1        a 

2        b    

2        c
idAdmin   itemCol

2          v

2          m

2          d

表2:ActionRights

userid  item

1        a 

2        b    

2        c
idAdmin   itemCol

2          v

2          m

2          d
所需结果:

  userid      yes/no

   1           no

   2           yes
当我在
ActionRight
中将
userid
匹配到
idadmin
时,它应该返回
Yes
否则
No

我尝试了以下查询:

select AccessMenu.userid,
case when ActionRights.IdAdmin=AccessMenu.userid then 'Yes' else 'No' end as 'GRP'
from AccessMenu left join ActionRights
on ActionRights.IdAdmin =AccessMenu.userid
但通过这个查询,我得到的重复结果如下:

 userid      yes/no

   1           no

   2           yes

   2           yes

   2           yes

   2           yes

   2           yes

请帮助我。

请使用子查询进行检查:

SELECT userid, 
       CASE 
         WHEN idadmin IS NULL THEN 'No' 
         ELSE 'Yes' 
       END AS 'Grp' 
FROM   (SELECT accessmenu.userid    AS UserId, 
               actionrights.idadmin AS IdAdmin 
        FROM   accessmenu 
               LEFT JOIN actionrights 
                      ON actionrights.idadmin = accessmenu.userid)z 
select distinct
    userid, 
    case when (SELECT COUNT(*) from ActionRights b where b.idAdmin=a.userid)>0 then 'Yes' else 'No' end [Yes/No]
from AccessMenu a

请使用子查询进行检查:

select distinct
    userid, 
    case when (SELECT COUNT(*) from ActionRights b where b.idAdmin=a.userid)>0 then 'Yes' else 'No' end [Yes/No]
from AccessMenu a
试试这个

SELECT distinct  UserId, CASE WHEN  IsAdmin  IS  NULL  THEN  'No'  ELSE  'Yes' END AS 'Grp'
FROM (  
      select AccessMenu.userid as UserId ,ActionRights.IsAdmin as IsAdmin
      from AccessMenu left join ActionRights
      on ActionRights.IsAdmin =AccessMenu.userid
     )a
看一看

试试这个

SELECT distinct  UserId, CASE WHEN  IsAdmin  IS  NULL  THEN  'No'  ELSE  'Yes' END AS 'Grp'
FROM (  
      select AccessMenu.userid as UserId ,ActionRights.IsAdmin as IsAdmin
      from AccessMenu left join ActionRights
      on ActionRights.IsAdmin =AccessMenu.userid
     )a
看一看

很简单。不需要内部查询或子查询。坐火车就行了 明显的

很简单。不需要内部查询或子查询。坐火车就行了 明显的