Это вполне возможно сделать ЗЕЬЕСТ следующим образом:SQL «массивов» для многократного использования с сравнениями
SELECT *
FROM orders
WHERE order_id in (10000, 10001, 10003, 10005);
Однако, можно создать переменную, которая хранит, что «массив» (10000,. ..) для многократного использования в нескольких заявлениях, подобных этому?
SELECT *
FROM orders
WHERE order_id in @IDarray;
Извините, если это очень простой вопрос - мы все должны спросить их один раз!
Редактировать: Хм, возможно, я должен уточнить. В моей точной ситуации у меня есть загрузка идентификаторов (давайте использовать приведенный выше массив в качестве примера), которые жестко закодированы, но могут измениться.
Они должны быть повторно использованы для нескольких инструкций INSERT, чтобы мы могли вставлять вещи в несколько таблиц для каждого из ID. Два таких конечных результатов может быть:
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);
Очевидно здесь возможность указать массив сохраняет номер, а также позволяет менять в одном месте вместо Вставки, имеющих быть изменены.
Sql Server, например, поддерживает временные таблицы. –
Если SQL Server видит каноническое [Массивы и списки в SQL Server] (http://www.sommarskog.se/arrays-in-sql-2008.html) –
Какая СУБД вы используете? Postgres напрямую поддерживает это: 'where order_id = ANY (ARRAY [1,2,3])' –