根据另一个表中的值自动创建新表的正确方法是什么?例如,如果表A有一个名为city的列包含不同的城市值,那么我需要根据每个不同的城市创建一个新表。然后需要将具有相应城市的所有记录插入其各自的表中。此外,如果城市名称中包含空格,则需要使用下划线替换。如何在MySQL中完成同样的工作?
在MS ACCESS中我可以通过以下方式完成此任务:
使用选择并替换名为SELREP的查询
SELECT table_A.column1, table_A.column2, table_A.city, Replace([city]," ","_") AS table_name_column FROM table_A;
创建公共函数MakeTableCity
Public Function MakeTableCity()
DoCmd.SetWarnings False
Dim db As Database
Set db = Application.CurrentDb
Dim distinctValues As DAO.Recordset
Set distinctValues = db.OpenRecordset("SELECT table_name_column FROM SELREP GROUP BY table_name_column", dbOpenSnapshot)
Do Until distinctValues.EOF
DoCmd.RunSQL "SELECT * INTO " & distinctValues("table_name_column") & " FROM SELREP WHERE table_name_column ='" & distinctValues("table_name_column") & "'"
distinctValues.MoveNext
Loop
DoCmd.SetWarnings True
Set distinctValues = Nothing
Set db = Nothing
End Function
答案 0 :(得分:0)
如果您打算创建新的 表城市有关城市的数据, 这意味着每个城市都有一排 继续阅读答案。
另一方面,如果你是 计划为...制作新表 每个城市,列相同, 那你的计划是非常糟糕的设计。 首先阅读关于规范化的内容。
第一种方法是创建一个名为city
的表,其中包含您想要的字段。例如:
CREATE TABLE city
( id INT auto_increment PRIMARY KEY
, name VARCHAR(50) NOT NULL
, population INT
, state CHAR(2)
) ;
然后将不同的城市名称复制到其中:
INSERT INTO city (name)
( SELECT DINSTINCT city --- change "city" into REPLACE(city, ' ', '_')
FROM table_A --- for the small changes you want
) ;
然后,更新其他字段(人口,州等)。
如果没有两个城市有相同的名称,则可以使用JOIN
ON table_A.city = city.name
如果没有,(并且[{1}}的{{1}}会更小),您可以通过添加字段{{1}来Primary Key
city
的结构ALTER
并删除table table_A
字段。然后,使用cityid
city
第二个选项是直接创建表格城市:
JOIN
然后更改定义主键的表,添加(填充,状态等)。