Sql 如何检查一个表在另一个表中是否有匹配的记录?
我有以下表格: 表1: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
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
看一看
很简单。不需要内部查询或子查询。坐火车就行了
明显的
很简单。不需要内部查询或子查询。坐火车就行了
明显的