【问题标题】:Create a table and specify data types according to an existing query根据现有查询创建表并指定数据类型
【发布时间】:2021-06-02 05:37:19
【问题描述】:

假设我有一张这样的桌子

此表是从存储在我的数据库中的另一个更大的表中查询的结果 我想要的只是创建一个像上面这样的表,并为每一列指定一个自定义格式并将其存储到我的数据库中

我知道我可以创建表 mytab 作为 select ...等 但是我不知道如何在 mysql 中指定我想要的列格式

你能帮忙吗?

【问题讨论】:

  • 我删除了 BigQuery 标签,因为您的问题明确提到了 MySQL。确实没有数据格式这样的东西,所以你的问题不清楚。
  • 您没有在数据库表定义中指定格式。这是在显示查询结果的应用程序中完成的。

标签: mysql sql


【解决方案1】:

如果您有查询 sql,您应该能够执行 select into 将结果存储在表中。添加LIMIT 子句以仅存储一行。然后,您可以执行SHOW CREATE TABLE tablename (from this SO answer) 来获取用于创建表的 SQL。由您决定主键应该是什么。

【讨论】:

    【解决方案2】:

    假设列格式是指数据类型:使用CAST 转换为所需的数据类型。

    create new_table as
      select
        cast( a.metrique as varchar(100) ) as metrique,
        cast( b.nombre_de_lignes as int ) as cote_de_lignes, ...
      from ...
    

    【讨论】:

    • 是的,显然 :-) 但是正如 Barmar 在请求 cmets 中指出的那样,我们不调用这些格式,而是调用类型。格式,例如格式为“2.3.2021”或“03/02/2021”的日期稍后会应用,通常(通常是自动)由您的应用程序应用。
    【解决方案3】:

    您可以完全或部分指定列属性。就像没有 SELECT 部分一样,您只需创建空表。

    即喜欢

    CREATE TABLE table_name ({any definitions allowed in table creation query:
                              columns specifications, indices, constraints, FKs, etc.})
    SELECT ...
    

    在这种形式中,SELECT 中的每个输出列都必须具有与 CREATE TABLE 部分中定义的列名匹配的别名。如果结构中没有别名,则名称==别名的列将添加到具有动态形成的属性的表定义中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-04
      • 1970-01-01
      • 1970-01-01
      • 2011-01-26
      • 2016-05-31
      • 1970-01-01
      • 1970-01-01
      • 2017-06-08
      相关资源
      最近更新 更多