2 votes

Vérifier s'il existe et tirer l'identité en une seule étape

Je vérifie dans une base de données SQL Server si une MemberID existe sur la base d'un WHERE clause

IF EXISTS (SELECT MemberID FROM ADMIN_Biosketch_Members 
           WHERE emailAddress = @emailaddress)

Et si elle existe, j'ai besoin de cette valeur pour l'insérer dans une autre table :

SELECT @MemberID = MemberID 
FROM ADMIN_Biosketch_Members 
WHERE emailAddress = @emailaddress

Existe-t-il un moyen de faire cela en une seule étape ? J'ai essayé

IF EXISTS (SELECT @MemberID = MemberID 
           FROM ADMIN_Biosketch_Members 
           WHERE emailAddress = @emailaddress)

Mais il n'a pas aimé ça.

Merci

1voto

marc_s Points 321990

Eh bien, vous pouvez vérifier NULL après avoir récupéré la valeur :

SELECT @MemberID = MemberID 
FROM ADMIN_Biosketch_Members 
WHERE emailAddress = @emailaddress

IF @MemberID IS NOT NULL
    -- value exists --> do something with it

Si le @emailaddress n'est pas présente dans votre tableau, alors la valeur @MemberID devient NULL .

0voto

Md. Suman Kabir Points 2964

Vous pouvez alors procéder comme ci-dessous au lieu d'utiliser EXISTS

SELECT @MemberID = MemberID FROM ADMIN_Biosketch_Members WHERE emailAddress = @emailaddress

if @MemberID is not null
  begin
  --your sql
  end

0voto

Andrey Khmelev Points 943

Je pense que vous cherchez quelque chose comme ça

-- this is your current table
create table #tmp (ID int, Name nvarchar(100))

insert into #tmp select 1, 'John'
insert into #tmp select 2, 'Andrey'
insert into #tmp select 3, 'Daniel'

-- this new table where you should insert your value
create table #tmp2 (ID int, Name nvarchar(100))

-- trick with inserting in case if it exists
insert into #tmp2
select *
from #tmp t
where t.ID in (select t2.ID from #tmp t2 where t2.ID = 3)

select *
from #tmp2

dans votre cas, cela ressemblera à

insert into ADMIN_Biosketch_Members_NEW(MemberID)
select MemberID
from ADMIN_Biosketch_Members t
where t.MemberID in (select t2.MemberID from ADMIN_Biosketch_Members t2 WHERE t2.emailAddress = @emailaddress)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X