[英]How to check existence of user-define table type in SQL Server 2008?
[英]How to check existence of data in a table from a where clause in sql server 2008?
假设我有一个包含user_id
, name
列的表,并且该表包含如下数据:
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
由于ana
和aga
在表中不存在,因此必须显示“ n”(与上面的输出类似)。
假设现有清单不在数据库中,则您将必须汇编包含这些清单的查询。 有很多方法可以做到这一点。 使用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
假设您只是手动进行测试:
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]
您没有提供足够的信息来提供有效的示例,但这应该可以使您接近:
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
;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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.