INSERT
次のようなステートメントに複数の値を挿入できるかどうかを知りたいです。
INSERT INTO myTable VALUES ( constant , ARRAY(multipleValues) );
これが不可能な場合は、ストアドプロシージャを使用します。私の質問は、実際の目的よりも好奇心のためです。レコードを一度に1つずつ挿入し、それが仕事をする作業ループを使用しているからです。
MySQLには配列データ型がありません。アプリケーションコードからMySQLクエリに配列を渡すには、配列を文字列に分解する必要があります。
その後、次のことができます。
INSERT INTO myTable
VALUES
(constant, value1),
(constant, value2),
(constant, value3),
-- etc.
または:
INSERT INTO myTable
SELECT constant, t.value
FROM (
SELECT value1 AS value
UNION ALL
SELECT value2
UNION ALL
SELECT value3
-- etc.
) AS t
一般に、最初の形式の方が簡潔ですが、定数列が多数ある場合は、2番目の形式の方が便利な場合があります。
次のように、VALUESセクションに複数のレコードを挿入できます。
INSERT INTO example (example_id, name, value, other_value)
VALUES
(100, 'Name 1', 'Value 1', 'Other 1'),
(101, 'Name 2', 'Value 2', 'Other 2'),
(102, 'Name 3', 'Value 3', 'Other 3'),
(103, 'Name 4', 'Value 4', 'Other 4');
@eggyalへのコメントで言ったように、 私が見つけた解決策があります:
INSERT INTO
t1
SELECT
"theConstant",
subValue
FROM
subTable
;
主要なアイデアを提供してくれた@eggyalに感謝します。