gpt4 book ai didi

php - MySQL 根据不同表中的值创建表

转载 作者:搜寻专家 更新时间:2023-10-30 21:36:49 25 4
gpt4 key购买 nike

根据另一个表中的值自动创建新表的正确方法是什么?例如,如果表 A 有一个名为 city 的列,其中包含不同的城市值,那么我需要根据每个不同的城市创建一个新表。然后需要将具有相应城市的所有记录插入到其相应的表中。此外,如果城市名称中包含空格,则需要将其替换为下划线。如何在 MySQL 中完成同样的操作?

在 MS ACCESS 中,我可以通过以下方式完成此操作:

  1. 使用名为 SELREP 的选择和替换查询

    SELECT table_A.column1, table_A.column2, table_A.city, Replace([city]," ","_") AS table_name_column FROM table_A;
  2. 创建公共(public)函数 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

最佳答案

  • 如果您打算创建一个新的带有城市数据的表格城市,意味着每个城市一行,然后继续阅读答案。

  • 如果,另一方面,你是计划为每个城市,都有相同的柱子,那么你的计划是非常糟糕的设计。首先阅读规范化。


第一种选择是创建一个名为 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
) ;

然后,更新其他字段(人口、州等)。

如果没有两个城市同名,则可以使用 ON table_A.city = city.name

完成两个表之间的 JOIN

如果不是,(而且更好,因为 cityPrimary Key 会更小),您可以ALTER 的结构>table table_A 通过添加字段 cityid 并删除 city 字段。然后两个表之间的 JOIN 将使用 ON table_A.cityid = city.id

完成

第二个选项是直接创建表城市:

CREATE TABLE city AS
( SELECT DINSTINCT city AS name --- change "city" into REPLACE(city, ' ', '_')
FROM table_A --- for the small changes you want
) ;

然后更改定义主键的表,添加(人口、州等)。

关于php - MySQL 根据不同表中的值创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5892054/

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