同じ列を持つ2つ以上のテーブルがある場合
表1
Structure, Name, Active
1,A,1
表2
Structure, Name, Active
2,B,0
これら2つのテーブルを組み合わせて、新しいテーブルに保存したいと思います。
新しいテーブル
Structure, Name, Active
1,A,1
2,B,0
ここにコードがあります
CREATE TABLE Amide_actives_decoys
(
Structure NVARCHAR(255),
Name NVARCHAR(255),
Active INT
)
GO
INSERT Amide_actives_decoys
FROM (
SELECT * FROM Amide_decoys
UNION
SELECT * FROM Amide_actives
)
次のエラーメッセージが表示されます
メッセージ156、レベル15、状態1、行10
キーワード「FROM」付近の構文が正しくありません。
使用する場合も同じこと
SELECT * INTO Amide_actives_decoys
FROM (
SELECT * FROM Amide_decoys
UNION
SELECT * FROM Amide_actives
)
この答えに従って
エラーメッセージは
メッセージ102、レベル15、状態1、行5
「;」付近の構文が正しくありません。
誰でも親切にコメントを提供できますか?ありがとう!
この構文は、さまざまなデータベースで機能します。
INSERT INTO Amide_actives_decoys(Structure, Name, Active)
SELECT * FROM Amide_decoys
UNION
SELECT * FROM Amide_actives;
この形式のINSERTでは、サブクエリの出力はINSERTの入力値のセットになります。
SELECTステートメントのサブクエリの式のデータ型は、INSERTステートメントのターゲットテーブルのデータ型と一致する必要があることに注意してください。
サブクエリによって返されるすべての行は、Amide_actives_decoysテーブルに挿入されます。
制約違反またはデータ型の競合のために1つの行がINSERTに失敗すると、INSERT全体が失敗し、行は挿入されません。
INSERTステートメント内では、有効なサブクエリを使用できます。
UNION ALL
それ以外の場合、すべてのデータをキャプチャすることはできません。テーブル内のデータ(重複など)に依存します。
INSERT INTO Amide_actives_decoys(Structure, Name, Active)
SELECT * FROM Amide_decoys
UNION ALL
SELECT * FROM Amide_actives;
一般的な構文は
INSERT INTO table2
SELECT * FROM table1;
このケースではSELECT INTOステートメントを使用できます
with cte as (select 1 col1 ,2 col2
union all
select 2,3)
select * into #tabletest from cte
select *From #tabletest
両方の答えで、問題は結果としてテーブルのエイリアス名を指定していないことです。INTO
ステートメントの 'INSERT
'も見逃したと思います。
クエリ1:
CREATE TABLE Amide_actives_decoys
(
Structure NVARCHAR(255),
Name NVARCHAR(255),
Active INT
)
GO
INSERT INTO Amide_actives_decoys
SELECT *
FROM (
SELECT * FROM Amide_decoys
UNION
SELECT * FROM Amide_actives
) LU --LU is added.
クエリ1の場合、以下も正しい
INSERT INTO Amide_actives_decoys
SELECT * FROM Amide_decoys
UNION
SELECT * FROM Amide_actives
クエリ2:
SELECT *
INTO Amide_actives_decoys
FROM (
SELECT * FROM Amide_decoys
UNION
SELECT * FROM Amide_actives
) LU -- LU added
create table Amide_actives_decoys
as
select Structure, Name, Active from
(
SELECT * FROM Amide_decoys
UNION
SELECT * FROM Amide_actives
)
;