gpt4 book ai didi

mysql - 从多个 mysql 表中插入不相关的值

转载 作者:行者123 更新时间:2023-11-30 23:04:56 25 4
gpt4 key购买 nike

我有一个从多个 mysql 表中读取的应用程序,但我想将所有数据放入 1 个表中。问题是,这些表没有链接字段......应用程序只是按顺序处理 3 个表中的行,希望每个表中排列正确的行(即表 1 中的行 1 适用于表 2 中的行 1)和 table3,等等)

我的表格如下:

表 1:名字,姓氏,ID,DoB

表 2:地址、城镇、州

表 3:密码

我想要的是:表4:名字,姓氏,ID,DoB,地址,城镇,州,密码

我已经创建了 Table4,现在正尝试使用选择查询插入值...我试过了...

SELECT
t1.Name,
t1.Surname,
t1.ID,
t1.DoB,
t2.Address,
t2.Town,
t2.State,
t3.password
FROM table1 AS t1,table2 AS t2, table3 AS t3;

...但这给了我重复的行,因为没有 where 子句。由于没有链接字段,我不能使用 JOIN 语句,对吗?我对 SQL 不是很熟悉,所以请帮忙!

最佳答案

好吧,官方你搞砸了。除非使用 ORDER BY 子句,否则 RDBMS 中没有第一行或最后一行。说明书也是这么写的。如果你发出一个

SELECT * FROM your_table;

您根本无法确保以插入行的相同顺序或每次发出语句时以相同的顺序获得结果。

另一方面,在实践中,大多数时候你会得到相同的结果,而且大多数时候甚至以相同的顺序插入行。

您可以做的是,首先打败那些没有想到在每个表中放置一个列来确定排序顺序的人(将来使用 auto_increment 列或包含日期和时间的时间戳列)插入时间或任何适合您需要的时间)和第二,(但只有在您别无选择时才真正这样做,就像我说的那样不可靠)您可以模拟一个可以加入的行号。

SELECT * FROM (
SELECT table1.*, @rn1 := @rn1 + 1 as row_number FROM
table1,
(SELECT @rn1 := 0) v
) a
LEFT JOIN (
SELECT table2.*, @rn2 := @rn2 + 1 as row_number FROM
table2,
(SELECT @rn2 := 0) v
) b ON a.row_number = b.row_number
LEFT JOIN (
SELECT table3.*, @rn3 := @rn3 + 1 as row_number FROM
table3,
(SELECT @rn3 := 0) v
) c ON a.row_number = c.row_number

关于mysql - 从多个 mysql 表中插入不相关的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22303433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com