0

假设我有一个带有 columns的表user_idname并且该表包含如下数据:

user_id   name
-------   -----
sou       souhardya
cha       chanchal
swa       swapan
ari       arindam
ran       ranadeep

如果我想知道这些用户(sou, cha, ana, agn, swa)是否存在于这个表中,那么我想要这样的输出:

user_id    it exists or not
-------    -----------------
sou            y
cha            y
ana            n
agn            n
swa            y

由于anaaga不存在于表中,它必须显示“n”(如上面的输出)。

4

4 回答 4

2

假设您现有的清单不在数据库中,您将不得不组装一个包含这些清单的查询。有很多方法可以做到这一点。使用 CTE,它看起来像这样:

with cte as
(
select 'sou' user_id
union all
select 'cha'
union all
select 'ana'
union all
select 'agn'
union all
select 'swa'
)
select 
  cte.user_id,
  case when yt.user_id is null then 'n' else 'y' end
from cte
left join YourTable yt on cte.user_id = yt.user_id

这也假设user_id是唯一的。

这是带有概念证明的 SQLFiddle:http ://sqlfiddle.com/#!3/e023a0/4

于 2012-08-01T20:25:28.767 回答
1

假设您只是手动测试:

DECLARE @Users TABLE
(
    [user_id] VARCHAR(50)
)

INSERT INTO @Users 
SELECT 'sou'
UNION SELECT 'cha'
UNION SELECT 'ana'
UNION SELECT 'agn'
UNION SELECT 'swa'



SELECT a.[user_id]
    , [name]
    , CASE
        WHEN b.[user_id] IS NULL THEN 'N'
        ELSE 'Y'
        END AS [exists_or_not]
FROM [your_table] a
LEFT JOIN @Users b
    ON a.[user_id] = b.[user_id]
于 2012-08-01T20:25:49.057 回答
0
;with usersToCheck as
(
          select 'sou' as userid
    union select 'cha'
    union select 'ana'
    union select 'agn'
    union select 'swa'
)
select utc.userid, 
(case when exists ( select * from usersTable as ut where ut.user_id = utc.userid) then 'y' else 'n' end)
from usersToCheck as utc
于 2012-08-01T20:28:07.053 回答
0

您没有提供足够的信息来提供一个工作示例,但这应该让您接近:

select tbl1.user_id, case tbl2.user_id is null then 'n' else 'y' end
from   tbl1 left outer join tbl2 on tbl1.user_id = tbl2.user_id
于 2012-08-01T20:25:37.567 回答