[英]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.