MySQL複数の行を返すSELECTサブクエリを含むテーブルにどのように挿入しますか?
INSERT INTO Results
(
People,
names,
)
VALUES
(
(
SELECT d.id
FROM Names f
JOIN People d ON d.id = f.id
),
(
"Henry"
),
);
I [〜#〜] want [〜#〜]このサブクエリから返されるすべての結果を新しいテーブルに入力します。 エラー1242(21000):サブクエリが複数の行を返しますを取得せずにこれを行う方法
INSERT INTO Results (People, names )
SELECT d.id, 'Henry'
FROM Names f
JOIN People d ON d.id = f.id
静的文字列Henry
をSELECT
クエリと組み合わせます。
INSERT INTO Results
(
People,
names,
)
VALUES
(
(
SELECT d.id
FROM Names f
JOIN People d ON (d.id = f.id) limit 1
),
(
"Henry"
),
);
これがうまくいくことがわかったものです。少し長いですが、多くの場合、余分なデータをシャッフルする必要があります。
値を持つ複数の行をtable2からtable1に挿入します。例:
INSERT INTO table1 (col1, col2, col3, col4, col5)
SELECT col1,col2,col3,col4,col5
FROM table2 t2
WHERE t2.val2 IN (MULTIPLE VALUES)
AND (Another Conditional);
ハードコードされた値を挿入して、繰り返しデータを含む複数の行を挿入できます。
INSERT INTO table1 (col1, col2, col3, col4, col5)
SELECT "Value", col2, col3, "1900-01-01","9999-12-31"
FROM table2 t2
WHERE t2.val2 IN (MULTIPLE VALUES)
AND (Another Conditional);
注:「値」、「1900-01-01」、「9999-12-31」は、挿入されたすべての行にわたって繰り返されます。
INSERT INTO Results
(
People,
names,
)
SELECT d.id, 'Henry'
FROM Names f
JOIN People d ON d.id = f.id
MySqlでは、重複を避けるために、次のように文字列から複数の値を挿入できます。ありがとう。
insert into brand(name) select * from (
select 'Fender' as name
union select 'a'
union ..... ) t
where not exists (select 1 from brand t2 where t2.name COLLATE latin1_general_ci = t.name COLLATE utf8mb4_unicode_ci )
このエラー(サブクエリが複数の行を返す)の理由は、括弧()を使用しているためです。ベストアンサーにもっと注意してください。サブクエリの前後に括弧が含まれていません