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

从多个mysql表中插入不相关的值,mysql,insert,Mysql,Insert,我有一个从多个mysql表读取数据的应用程序,但我想把所有数据放在一个表中。问题是,这些表没有链接字段。。。应用程序只是按顺序处理3个表中的行,希望在每个表中排列正确的行(即表1中的行1适用于表2和表3中的行1,依此类推) 我的表格如下: 表1: 姓名、姓氏、身份证、出生日期 表2: 地址、城镇、州 表3: 密码 我想要的是: 表4: 姓名、姓氏、身份证、出生日期、地址、城镇、州、密码 我已经创建了表4,现在我正在尝试使用select查询插入值。。。 我试过 SELECT t1.Name, t1

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

我的表格如下:

表1: 姓名、姓氏、身份证、出生日期

表2: 地址、城镇、州

表3: 密码

我想要的是: 表4: 姓名、姓氏、身份证、出生日期、地址、城镇、州、密码

我已经创建了表4,现在我正在尝试使用select查询插入值。。。 我试过

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不是很有经验,所以请帮助我

好吧,你真是一团糟。RDBMS中没有第一行或最后一行,除非使用
orderby
子句。这也是手册中所说的。如果你发出

SELECT * FROM your_table;
您不能确保每次发出语句时都以插入行的相同顺序或相同顺序获得结果

另一方面,在实践中,大多数情况下,您将得到相同的结果,并且大多数情况下,即使是以相同的顺序插入行

你可以做的是,首先,打一个没有想到在每个表中放入一列来确定排序顺序的人(将来可以使用自动递增列或时间戳列来保存插入的日期和时间或任何适合你需要的列),然后,(但只有在你别无选择的情况下才这么做,就像我说的那样,这是不可靠的)你可以模拟一个你可以加入的行号

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

您如何知道表2中的哪个地址属于表1中的哪个用户?我依赖于插入地址的顺序,希望正确添加行(即表2中的第10行与表1和表3中的第10行相关)。遗憾的是,我从我工作的前任那里继承了这个应用程序,所以它不是我的设计。这就是为什么我要尝试将它全部放在一个表中!我会尝试一下……就像我在前面的评论中所说的,我继承了这个应用程序,我正在尝试修改它以修复任何问题cr@p.这就是为什么我想把它们都放在一个表中。实际上我从头开始重新编码了entore只保留数据库,因为它包含数据。现在我想重新设计数据库,使其正常工作。@Hashimalkabaz对变量名和联接进行了一些调整。请再试一次。先生,您是一个传奇人物!它工作得很好。现在要弄清楚到底发生了什么事!谢谢!!有没有办法将这个问题标记为“已解决”?@Hashimalkabaz是的,通过单击我答案左边的复选框。这里还有一个此网站的快速指南: