私は深刻なSQLのnoobだから、どんな助けもありがとう。私はので、私は私がこれまで持っているものにレイアウトます何をしようとしているにも説明に苦労しています:SQLは列から選択します。
DECLARE @UserIDInt table (ID int);
INSERT into @UserIDInt
SELECT UserId
FROM [LcsCDR].[dbo].[Users]
WHERE [LcsCDR].[dbo].[Users].[UserUri] LIKE '%example';
SELECT *
FROM [LcsCDR].[dbo].[SessionDetails]
WHERE [LcsCDR].[dbo].[SessionDetails].[User1Id] = @UserIDInt;
"DECLARE @UserIDInt table (ID int);"
これは、「ID」と呼ばれる列を持つ私の変数を作成します
INSERT into @UserIDInt
SELECT UserId
FROM [LcsCDR].[dbo].[Users]
WHERE [LcsCDR].[dbo].[Users].[UserUri] LIKE '%example';
を
これは私が失われています場所ですWHERE文は
SELECT *
FROM [LcsCDR].[dbo].[SessionDetails]
WHERE [LcsCDR].[dbo].[SessionDetails].[User1Id] = @UserIDInt;
一致するか否かに基づいて、ID列に数値を追加します。私はから列[LcsCDR].[dbo].[SessionDetails].[User1Id]
がすべて私の変数内のものと一致するなら、すべての行を返そうとしています。私が思っている問題は、SQLは変数の列内で複数の値を見つけることができないということです。基本的に、変数@UserIDIntのID列には数値の束が含まれます。
[LcsCDR].[dbo].[SessionDetails].[User1Id]
が@UserIDInt.ID
列内のものと一致する場合、最後のSELECT文を実行してSQLにすべての結果を返すにはどうすればよいですか?
私はひどくそれを説明している場合、私は、SQL Serverに2014
謝罪を使用しています。
select sd.*
from [lcscdr].[dbo].[sessiondetails] sd
inner join @useridint i
on i.id = sd.user1id;
またはexists()
を使用して::
select sd.*
from [lcscdr].[dbo].[sessiondetails] sd
where exists (
select 1
from @useridint i
where i.id = sd.user1id
);
またはin()
を使用して:質問:) inner join
を使用して
ヒント: 'Exists' – Sami
あなたは答えを持っていますが、私は別のコメントを追加します。一時テーブルまたはテーブル変数を作成しないでください。 @SqlZimと同じ戦略を使用するだけで、実際のソーステーブルを直接クエリできます。結果セットを一時テーブルにダンプするのは、それが後続のクエリの結果セットをフィルタリングする役割を果たすだけであれば、一般的に利点はありません。盲目的にデザインパターンに従わないでください。 – SMor