Это может быть трудно понять, поэтому дайте мне знать, если мне нужно описать это лучше.Скажем, у меня есть 3 таблицы tableA, tableB и tableC со следующим синтаксисом:
CREATE TABLE tableA (
data_point_1 VARCHAR(30),
data_point_2 VARCHAR(30),
data_point_3 VARCHAR(30)
);
CREATE TABLE tableB (
bid INTEGER AUTO_INCREMENT,
cid INTEGER AUTO_INCREMENT,
data_point_1 VARCHAR(30),
);
CREATE TABLE tableC (
cid INTEGER AUTO_INCREMENT,
data_point_2 VARCHAR(30),
data_point_3 VARCHAR(30)
);
Теперь я хочу перенести данные из tableA в tableB и tableC.Итак, по сути, я хочу что-то вроде:
INSERT INTO tableB
SELECT
data_point_1,
(SELECT cid FROM tableC WHERE (INSERT INTO tableC SELECT data_point_2, data_point_3 FROM tableA))
FROM tableA
Я не пробовал выше, но я предполагаю, что это невозможно, поскольку INSERT не возвращает фактические значения (мне нужно выбрать Iпредположим), но мой вопрос заключается в том, как я могу вставить данные из A, поместить их в C, а затем одновременно взять идентификатор из C и другую точку данных из A и поместить их оба в B.
Я думаю,Я, вероятно, могу разбить его на 2 оператора вставки, а затем сделать выбор на C, где data_point_2 = data_point_2 и data_point_3 = data_point_3, но мне было интересно, есть ли способ сделать это только в одном запросе?Я не смог ничего найти, поэтому решил, что я спрошу здесь.
Опять же: я не хочу 2 отдельных запроса на вставку.Я хочу быть в состоянии сделать это в 1. (Потому что теоретически мне, возможно, придется абстрагироваться дальше)