mysql表移动插入

问题描述 投票:0回答:2

这可能很难理解,所以如果我需要更好地描述它,请告诉我。假设我有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没有返回实际值(我需要一个我假设的选择),但是我的问题变成了如何从A插入数据把它放入C然后同时从C获取id并从A获取另一个数据点并将它们都放入B.

我想我可以将其分解为2个插入语句,然后在C上执行选择,其中data_point_2 = data_point_2和data_point_3 = data_point_3,但我想知道是否有办法在一个查询中执行此操作?我找不到任何东西,所以我想我会在这里问。

再说一遍:我不想要2个单独的插入查询。我希望能够在1中完成。(理论上我可能需要进一步抽象)

mysql select insert transfer
2个回答
0
投票

你可以在两个声明中做到如下:

INSERT INTO TableB(data_point_1) SELECT data_point_1 FROM TableA
INSERT INTO TablEc(data_point_2,data_point_3) SELECT data_point_2, data_point_3 FROM TableA

0
投票

解决方案似乎是没有解决方案= /猜测我将不得不在多个插入中执行此操作。谢谢各位的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.