我有3个MySQL MyISAM表:table1,table2和table3。 每个表都有一个ID列(分别为ID,ID2,ID3)和不同的数据列。
例如table1有[ID,Name,Birthday,Status,...]列,
table2有[ID2,Country,Zip,...],
table3有[ID3,Source,Phone,...]
你明白了。
ID,ID2,ID3列对于所有三个表都是通用的...如果table1中有ID值,它也将出现在table2和table3中。这些表中的行数相同,每个表中大约10米行。
我想要做的是创建一个新表,其中包含(大部分)所有三个表的列并将它们合并到其中。 例如,必须转换日期,因为它们现在是VARCHAR YYYYMMDD格式。阅读MySQL手册我认为STR_TO_DATE()可以完成这项工作,但我不知道如何编写查询本身,所以我不知道如何集成日期转换。
所以基本上,在我创建新表(我知道该怎么做)后,如何将三个表合并到其中,将查询集成到日期转换中?
我唯一不清楚的是如何在查询中转换日期。 据我所知,查询应该是这样的:
INSERT INTO [new table]
SELECT table1.ID, table1.Name, table1.Birthday, table2.Country, table3.Phone
FROM table1
INNER JOIN table2 ON table1.ID = table2.ID2
INNER JOIN table3 ON table1.ID = table3.ID3;
...但我怎样才能转换其中的日期?或者就此而言,在插入之前将任何函数应用于字段?例如,如何在使用STR_TO_DATE()插入之前转换生日字段?我把它放在哪里?
STR_TO_DATE(table1.Birthday, '%Y%m%d')
[错误我认为只需将“table1.Birthday”替换为“STR_TO_DATE(table1.Birthday,...)”?这是正确的吗?]
答案 0 :(得分:1)
您希望查询INSERT SELECT
查询:
INSERT INTO [new table]
SELECT [values]
FROM table1
INNER JOIN table2 on table1.ID = table2.ID2
INNER JOIN table3 ON table1.ID = table3.ID3;
在哪里填写[new table]
作为新表的名称,并[values]
作为新表中所需的值。
有关详细信息,请参阅本手册的相关部分。
INSERT SELECT
声明JOIN
个表的详细信息