2

次のように SELECT ステートメントを実行することは完全に可能です。

SELECT *
FROM orders
WHERE order_id in (10000, 10001, 10003, 10005);

ただし、その「配列」(10000、...) を格納する変数を作成して、複数のステートメントで繰り返し使用することは可能ですか?

SELECT *
FROM orders
WHERE order_id in @IDarray;

これが非常に単純な質問である場合は申し訳ありません-一度質問する必要があります!

編集:うーん、おそらく明確にする必要があります。私の正確な状況では、ハードコードされているが変更される可能性のある ID が多数あります (上記の配列を例として使用しましょう)。

これらは、複数の INSERT ステートメントで再利用できる必要があるため、ID ごとに複数のテーブルに挿入できます。そのような 2 つの最終結果は次のようになります。

INSERT INTO table1 VALUES (10000, 1, 2, 3);
INSERT INTO table1 VALUES (10001, 1, 2, 3);
INSERT INTO table1 VALUES (10003, 1, 2, 3);
INSERT INTO table1 VALUES (10005, 1, 2, 3);

INSERT INTO table2 VALUES (10000, a, b, c);
INSERT INTO table2 VALUES (10001, a, b, c);
INSERT INTO table2 VALUES (10003, a, b, c);
INSERT INTO table2 VALUES (10005, a, b, c);

明らかに、ここで配列を指定できるとスペースが節約され、INSERT を変更する代わりに 1 つの場所で配列を変更することもできます。

4

2 に答える 2

1

Microsoft SQL Server では、テーブル変数を使用できます。

CREATE TABLE @IDTable(id INT PRIMARY KEY);
-- insert IDs into table

SELECT *
FROM orders o
INNER JOIN @IDTable i ON i.id = o.order_id;

INSERT INTO table2
SELECT id, 1, 2, 3
  FROM @IDTable

INSERT INTO table2
SELECT id, 'a', 'b', 'c'
  FROM @IDTable
于 2013-05-16T09:51:58.167 に答える