Это может быть трудно понять, поэтому дайте мне знать, если мне нужно будет описать его лучше. Скажем, у меня есть 3 таблицы TABLEA, TableB и tableC со следующим синтаксисом:mysql table move insertions
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 не возвращает фактические значения (я должен был бы отборное я предполагаю) , но мой вопрос заключается в том, как я могу вставить данные из A, поместить их в C, а затем в то же время захватить идентификатор из C и другую точку данных из A и поместить их в B.
Я полагаю, что, возможно, он состоит из 2 операторов вставки, а затем делает выбор на C, где data_point_2 = data_point_2 и data_point_3 = data_point_3, но мне было интересно, есть ли способ сделать это только в одном запросе? Я ничего не мог найти, поэтому решил, что спрошу здесь.
Опять же: я не хочу 2 отдельных запроса на вставку. Я хочу быть в состоянии сделать это в 1. (Причина теоретически я мог бы нужно абстрагировать далее)
У вас нет ответа? Все еще не видел жизнеспособного способа сделать это ... –
Возможно, вы просите невозможное (для MySQL в любом случае). Я не уверен, что вы беспокоитесь, но вы можете посмотреть, как работают транзакции. Это способ сделать так, чтобы многие заявления практически «происходили сразу». – Andrew
По-видимому, это невозможно, так как никто не может найти решение. Thanks =/ –