Вставьте в то, когда число столбцов не будет соответствовать количеству значений

У меня есть вставка sql оператор, например.

INSERT INTO `table_a` (`col_a`, `col_b`, `col_c`, `col_d`) VALUES
(1, 2, 3, 4),
(2, 1, 6, 9),
(3, 1, 4, 5)

Я хочу вставить это в другую таблицу, однако таблица, в которую я хочу вставить ее, имеет другую структуру к тому из sql оператора (она имеет меньше полей), например.

table_b has columns 'col_a', 'col_b', 'col_d'

Что делает я должен сделать к исходному sql statment так, чтобы я мог заставить его вставлять его в table_b. Я предполагаю, что это было бы что-то вроде просто игнорирования значения, которое находится в col_c и просто отправляющий это во временную переменную, а не field.e.g.

INSERT INTO `table_b` (`col_a`, `col_b`, @temp_var, `col_d`) VALUES
(1, 2, 3, 4),
(2, 1, 6, 9),
(3, 1, 4, 5)
6
задан zx8754 11 January 2018 в 08:28
поделиться

3 ответа

Используйте временную таблицу:

CREATE TEMPORARY TABLE myTemp (
col_a integer,
col_b integer,
col_c integer,
col_d integer
);
INSERT INTO myTemp (col_a, col_b, col_c, col_d) VALUES (1, 2, 3, 4), (2, 1, 6, 9), (3, 1, 4, 5);
INSERT INTO table_a (SELECT col_a,col_b,col_d FROM myTemp);

Таблица опускается по окончании сеанса (или вы можете удалить ее вручную)

.
5
ответ дан 10 December 2019 в 00:38
поделиться

Как насчет вас удалить?

INSERT INTO table_b (col_a, col_b, col_d) VALUES (1, 2, 4), (2, 1, 9), (3, 1, 5)
3
ответ дан 10 December 2019 в 00:38
поделиться

Это уродливо, и я только что пытался в SQLite, но я могу изобразить, что он также работает в MySQL (документация не , скажем, что это Разрешено ( Допускается) ( Обновление : См. Комментарий Иоанна, это не работает работа в MySQL):

sqlite> create table t(a,b,c);
sqlite> insert into t (a,b,b,c) values (1,2,3,4);
sqlite> select * from t;
1|2|4
2
ответ дан 10 December 2019 в 00:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: