这可能很难理解,所以如果我需要更好地描述它,请告诉我。假设我有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中完成。(理论上我可能需要进一步抽象)
答案 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)
解决方案似乎是没有解决方案= /猜测我将不得不在多个插入中执行此操作。感谢所有人的帮助。