ある列から別のテーブルの別の列にデータをコピーしたい。どうやってやるの?
私は以下を試しました:
Update tblindiantime Set CountryName =(Select contacts.BusinessCountry From contacts)
しかし、それは機能しませんでした。
連絡先テーブルの「BusinessCountry」列をtblindiantimeテーブルの「CountryName」列にコピーしたい。
ある列から別のテーブルの別の列にデータをコピーしたい。どうやってやるの?
私は以下を試しました:
Update tblindiantime Set CountryName =(Select contacts.BusinessCountry From contacts)
しかし、それは機能しませんでした。
連絡先テーブルの「BusinessCountry」列をtblindiantimeテーブルの「CountryName」列にコピーしたい。
回答:
SQL Server 2008では、次のようにマルチテーブル更新を使用できます。
UPDATE tblindiantime
SET tblindiantime.CountryName = contacts.BusinessCountry
FROM tblindiantime
JOIN contacts
ON -- join condition here
更新する行を指定するには、結合条件が必要です。
ターゲットテーブルが現在空の場合は、代わりにINSERTを使用する必要があります。
INSERT INTO tblindiantime (CountryName)
SELECT BusinessCountry FROM contacts
ここでクエリ:
同じ表:
UPDATE table_name
SET column1 = column2
別の表:
UPDATE table_name1
SET column1 = (
SELECT column2
FROM table_name2
WHERE table_name1.id = table_name2.id
);
Table2.Column2 => Table1.Column1
この質問は古いと思いますが、受け入れられた答えは私にはうまくいきませんでした。将来のグーグルにとって、これは私のために働いたものです:
UPDATE table1
SET column1 = (
SELECT column2
FROM table2
WHERE table2.id = table1.id
);
それによって:
[Michael Pakhantsov]
キーフィールドが2つのテーブルであることを願っています。
UPDATE tblindiantime t
SET CountryName = (SELECT c.BusinessCountry
FROM contacts c WHERE c.Key = t.Key
)
ORA-01427: single-row subquery returns more than one row選択によって複数の行が返される場合にスローされます。複数の行を選択して、これらの値で列を更新する場合はどうなりますか?
WHERE。たとえば、tblindiantimeにフィールドがありますContactID。これはtblindiantimeIDの各行にcontacts属する行のフィールドであり、を使用しますWHERE tblindiantime.ContactID=contacts.ID。別のバリエーションについては、cedrikdlbの回答を参照してください。
同様の質問の回答は、この質問で選択された回答(Mark Byersによる)よりも正確に機能しました。Markの回答を使用して、更新された列はすべての行で同じ値を取得しました(おそらく、結合に一致した最初の行の値)。他のスレッドからのParveenaAroraの回答を使用して、列を正しい値で更新しました。
この質問のテーブル名と列名を使用するようにParveenaのソリューションを変換すると、クエリは次のようになります(テーブルはtblindiantime.contact_idを介して関連付けられていると想定しています)。
UPDATE tblindiantime
SET CountryName = contacts.BusinessCountry
FROM contacts
WHERE tblindiantime.contact_id = contacts.id;
以前の回答はすべて正しいと思います。以下のコードは、複数の行を一度に更新する必要がある場合に特に有効です。注:これはPL / SQLです。
DECLARE
CURSOR myCursor IS
Select contacts.BusinessCountry
From contacts c WHERE c.Key = t.Key;
---------------------------------------------------------------------
BEGIN
FOR resultValue IN myCursor LOOP
Update tblindiantime t
Set CountryName=resultValue.BusinessCountry
where t.key=resultValue.key;
END LOOP;
END;
これがお役に立てば幸いです。
現在、Management Studio2016を使用するとさらに簡単になります。
SQL Server ManagementStudioの使用
あるテーブルから別のテーブルにデータをコピーするには
1.テーブルを右クリックし、[デザイン]をクリックして、コピーする列とコピー先の列を含むテーブルを開きます。
2.コピーする列のあるテーブルのタブをクリックして、それらの列を選択します。
3. [編集]メニューから、[コピー]をクリックします。
4.新しいクエリエディタウィンドウを開きます。
5.クエリエディタを右クリックし、エディタで[クエリのデザイン]をクリックします。
6. [テーブルの追加]ダイアログボックスで、ソーステーブルと宛先テーブルを選択し、[追加]をクリックして、[テーブルの追加]ダイアログボックスを閉じます。
7.クエリエディタの開いている領域を右クリックし、[タイプの変更]をポイントして、[結果の挿入]をクリックします。
8. [挿入結果のターゲットテーブルの選択]ダイアログボックスで、宛先テーブルを選択します。
9.クエリデザイナの上部で、ソーステーブルのソース列をクリックします。
10.クエリデザイナがINSERTクエリを作成しました。[OK]をクリックして、クエリを元のクエリエディタウィンドウに配置します。
11.クエリを実行して、ソーステーブルから宛先テーブルにデータを挿入します。
別の属性を使用することで解決できます。