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