簡體   English   中英

如何從SQL Server 2008中的where子句檢查表中數據的存在?

[英]How to check existence of data in a table from a where clause in sql server 2008?

假設我有一個包含user_idname列的表,並且該表包含如下數據:

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

如果我想知道這些用戶( souchaanaagnswa )是否存在於此表中,那么我想要這樣的輸出:

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

由於anaaga在表中不存在,因此必須顯示“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM