【发布时间】:2012-01-28 16:21:53
【问题描述】:
这可能很难理解,所以如果我需要更好地描述它,请告诉我。假设我有 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)。我不确定您关心的是什么,但您可能会研究事务的工作方式。它们是一种让您几乎可以“同时发生”许多陈述的方式。
-
从表面上看这可能是不可能的,因为没有人可以找到解决方案。谢谢=/
标签: mysql select insert transfer