我有三个 MySQL 表,每个表只有一列。
第一个表 - > Item_No 有列 item_no
第二个表 - > Item_Name 有列 item_name
第三个表 - > Item_Price 有列 item_price
这三个表包含彼此相关的数据。
我想将这三个表合并为一个包含三列的表。
我创建了一个新表 -> 项目有三列 item_no、item_name、item_price。
我想将前三个表中的所有数据移动到新表(项目)中。
我不保证这会起作用,但它可能会解决您的问题。
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 按此等级排列每个表中的列。
使用您的结构,SELECT
同一张表上的每条语句都可以给出不同的结果,尤其是没有主键的情况下(尽管即使主键也不能保证有序结果)。
您可以做的是给每一行提供一些序数,希望在所有三个表中序数都尊重初始顺序,并通过那些尝试连接表。