2

私はうまく機能する次のクエリを持っています。

SELECT ui.userID, 
    ui.lockedInd, 
    ui.lockedBy, 
    ui.lockedReason, 
    ui.updatedDtTm,
    ui.updatedBy,
    ua.password,
    ua.updatedDtTm,
    ua.updatedBy 
FROM userInfo ui 
JOIN userAuthentication ua 
    ON ui.userinfoseqid = ua.userinfoseqid
WHERE ui.userID IN (
    'userOne',
    'userTwo'
)

一番上で宣言された変数にユーザー名を入れたいと思います。私は常に1つの値を持つ変数しか実行していないため、変数を作成して追加する方法が少し混乱しています。以下のsudoコード

DECLARE @userIDs
SET @userIDs = "'userOne', 'userTwo'"

SELECT ui.userID, 
    ui.lockedInd, 
    ui.lockedBy, 
    ui.lockedReason, 
    ui.updatedDtTm,
    ui.updatedBy,
    ua.password,
    ua.updatedDtTm,
    ua.updatedBy 
FROM userInfo ui 
JOIN userAuthentication ua 
    ON ui.userinfoseqid = ua.userinfoseqid
WHERE ui.userID = @userIDs
4

2 に答える 2

2

テーブル変数の使用はあなたのために働くはずです。

DECLARE @UserIDS TABLE 
(
    UserId VARCHAR(40)
)

INSERT INTO @UserIDS
(
UserId
)
SELECT 'UserOne'
UNION ALL SELECT 'UserTwo'
UNION ALL SELECT 'UserThree'

SELECT ui.userID, 
    ui.lockedInd, 
    ui.lockedBy, 
    ui.lockedReason, 
    ui.updatedDtTm,
    ui.updatedBy,
    ua.password,
    ua.updatedDtTm,
    ua.updatedBy 
FROM userInfo ui 
JOIN userAuthentication ua 
    ON ui.userinfoseqid = ua.userinfoseqid
WHERE ui.userID IN @UserIDS
于 2013-02-15T22:00:33.247 に答える
2

一時テーブルを使用できます。詳細については、http ://www.simple-talk.com/sql/t-sql-programming/temporary-tables-in-sql-server/を参照してください。

たとえば、テーブル変数を作成します。

DECLARE @UserIDs TABLE (ID nvarchar(50))
INSERT INTO @UserIDs VALUES ('userOne'), ('userTwo')

SELECT ui.userID
FROM userInfo ui 
JOIN userAuthentication ua 
    ON ui.userinfoseqid = ua.userinfoseqid
WHERE ui.userID IN (SELECT ID FROM @UserIDs)
于 2013-02-15T22:04:54.567 に答える