0

columns を持つテーブルがuser_idありname、テーブルに次のようなデータが含まれているとします。

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

これらのユーザー ( souchaana、) がこのテーブルに存在するかどうかを知りたい場合は、次のような出力が必要ですagnswa

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

anaおよびagaがテーブルに存在しないため、「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 に答える