0

我有三个 MySQL 表,每个表只有一列。

第一个表 - > Item_No 有列 item_no

第二个表 - > Item_Name 有列 item_name

第三个表 - > Item_Price 有列 item_price

这三个表包含彼此相关的数据。

我想将这三个表合并为一个包含三列的表。

我创建了一个新表 -> 项目有三列 item_no、item_name、item_price。

我想将前三个表中的所有数据移动到新表(项目)中。

在此处输入图像描述

4

2 回答 2

0

我不保证这会起作用,但它可能会解决您的问题。

SET @rank1 := 0;
SET @rank2 := 0;
SET @rank3 := 0;

INSERT INTO new_table (item_no, item_name, item_price)
SELECT t1.item_no, t2.item_name, t3.item_price
FROM (SELECT @rank1 := @rank1 + 1 AS rank, item_no
      FROM Item_No) t1
JOIN (SELECT @rank2 := @rank2 + 1 AS rank, item_name
      FROM Item_Name) t2
ON t2.rank = t1.rank
JOIN (SELECT @rank3 := @rank3 + 1 AS rank, item_price
      FROM Item_Price) t3
ON t3.rank = t1.rank;

如果您不指定ORDER BY子句,这依赖于数据库按照它们最初插入的顺序返回行。然后,@rankN变量为每个表生成行号,并且 JOIN 按此等级排列每个表中的列。

于 2013-09-12T08:03:28.183 回答
0

使用您的结构,SELECT同一张表上的每条语句都可以给出不同的结果,尤其是没有主键的情况下(尽管即使主键也不能保证有序结果)。

您可以做的是给每一行提供一些序数,希望在所有三个表中序数都尊重初始顺序,并通过那些尝试连接表。

于 2013-09-12T07:38:29.790 回答