あるテーブルからデータを取り出し、複数のテーブルに挿入するクエリ/ SPを作成しようとしています。私はすべてが一時テーブルのように最初に置かれる1つのメインテーブルを持っています。従業員が確認されたとき、それは、必要に応じてのみ、一時テーブルからフィールドまたは2を必要とする複数のテーブルに分割されますザン重複のない複数(7)のテーブルに挿入
一時テーブル
CREATE TABLE Employee
(
userID INT IDENTITY(1,1) NOT NULL,
userName VARCHAR(50) NULL,
FirstName VARCHAR(50) NULL,
LastName VARCHAR(50) NUll,
UserPassWd VARCHAR(50) NULL,
EmailId VARCHAR(100) NULL
CONSTRAINT PK_Employee PRIMARY KEY (userID)
)
。以下にリストアップされているUserEmail
テーブルは、テーブルの1つです。私は今それを1つのテーブルのために働かせようとしているし、私はちょうど挿入部分をコピーし、新しいテーブルにテーブル名と属性を変更すると思います。
DECLARE @EMAIL VARCHAR(100)
DECLARE @USERID INT
SELECT @USERID = userID
,@EMAIL = EmailId
FROM Employee
WHERE userID = 1004
INSERT INTO UserEmail
(
EmailAddress
,EmailTypeID
,ExternalUserID
,Active
,CreatedByID
,CreatedDate
,UpdatedByID
,UpdatedDate
)
SELECT @EMAIL -- Email Address
,1 -- Email Type
,1 -- ExternalUserID
,1 -- Active
,1 -- CreatedByID
,CURRENT_TIMESTAMP -- CreatedDate
,1
,CURRENT_TIMESTAMP -- UpdatedDate
FROM Employee X
WHERE 1=1
AND X.userID = '####'-- INSERT USERID HERE for testing
これはUserEmail
テーブルにレコードを挿入しますが、私はので、私はこれを追加しようとしたが、それは私がそれをやりたいしない持ってカント重複ユーザーを作成します。
WHERE 1=1 AND NOT EXISTS( SELECT userID FROM Employee WHERE userID = 1004 )
どれガイダンスやヘルプははるかに高く評価されるだろう。ありがとうございました!
方法を見直す
を延長存在する場合にのみ、NOTのようなあなたは
UserEmail
に挿入する場合は? –それはいいアイデアです。 – whisk
私はあなたのスクリプトをたくさん理解していません。あるテーブルをあるテーブルから別のテーブルに挿入する必要があります。そして、単に 'UserEmail SELECTに挿入する 'を使わないのはなぜですか?なぜすべての変数? 'EmailId'は' Emplyee'テーブルにありません。どうすれば '@ EMAIL'にすることができますか?なぜ 'UserEmail'テーブルに' user'にリンクする属性がありませんか?また、なぜ日付を整数として保存するのですか?最後に、重複は何と考えますか?あなたは本当に 'EmailId'だけを挿入しています。残りはデフォルトです。本当に' EmailId'か 'EmailAddress'ですか? – HoneyBadger