私は問題があります。T1、T2、T_target の 3 つのテーブルがあります。T1 および T2 テーブルにはさまざまな列がありますが、両方の ID 列だけが必要です。T_target テーブルにはもちろん ID 列があり、もう 1 つ、project_No があります。
T1 と T2 にも表示される ID がいくつかありますが、それらの間で重複を作成したくありません。ID が両方のテーブルに表示される場合は、T_target に 1 回だけ挿入する必要がありますが、既に T_target にある場合は2回行動することが許されています。もう 1 つの基準は、新しく挿入されたすべての ID が「project_No」列の値 21 でなければならないということです。たとえば、次のようになります。
T1:
ID
2548
2566
2569
2843
2888
...
T2:
ID
2557
2566
2569
2700
2913
2994
3018
5426
...
T_ターゲット:
ID project_No
2976 1
3331 7
4049 7
5426 8
5915 3
6253 10
...
そして、私が見たい結果:
T_ターゲット:
ID project_No
2548 21
2557 21
2566 21
2569 21
2700 21
2843 21
2888 21
2913 21
2976 1
2994 21
2018 21
3331 7
4049 7
5426 8
5426 21
5915 3
6253 10
...
それで、私はこのコードでそれを試しました(T_target列の両方が主キーであるため、ここで「NOT NULL」基準にすることが重要です):
insert into T_target (ID, project_No)
select (select ID
from T1 where ID is not NULL
union
select ID
from T2 where ID is not NULL), 21
select * from T_target
エラー メッセージ: 「メッセージ 512、レベル 16、状態 1、行 2 サブクエリが複数の値を返しました。これは、サブクエリが =、!=、<、<=、>、>= に続く場合、またはサブクエリが式として使用されました。ステートメントは終了しました。」
次に、最初の SELECT と括弧の代わりに VALUES ステートメントを試しましたが、エラーは同じです。
同様の問題があります: mySQL query: How to insert with UNION? しかし、この解決策は、VALUE と SELECT の間の構文エラーを示しているため、うまくいきません。
手を貸してください。ありがとうございました!