mysql表移动插入

时间:2012-01-28 16:21:53

标签: mysql select insert transfer

这可能很难理解,所以如果我需要更好地描述它,请告诉我。假设我有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上执行select,其中data_point_2 = data_point_2和data_point_3 = data_point_3,但我想知道是否有办法在一个查询中执行此操作?我找不到任何东西,所以我想我会在这里问。

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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