在mysql中轻松'从视图创建表'语法?

use*_*841 37 mysql syntax

我想创建一个表,它是视图结果的缓存.有没有一种简单的方法可以从视图的定义中自动定义表格,还是我必须将它拼凑在一起show create table view

Mic*_*ski 54

您可以CREATE TABLE SELECT从视图中构建它.这应该将视图的结构复制为包含所有视图行的新表.这是此语句的MySQL语法参考.

CREATE TABLE tbl_from_view AS    
  SELECT
    col1,
    col2,
    col3,
    col4,
    col5
  FROM your_view;
Run Code Online (Sandbox Code Playgroud)

请注意,您希望在列选择中非常明确.不建议SELECT *从源视图执行a .同时确保你有任何计算或聚合列的别名,如COUNT(*), MAX(*), (col1 + col2)等.

  • 为什么不选择`SELECT*`? (6认同)
  • @MartinBurch对于生产代码中的`SELECT*`,通常_never_是可取的,而是更喜欢明确检索的列及其顺序.对于CTAS,您可能希望指定列顺序.如果您确定您需要所有列并且它们已经按照首选顺序排列,那么请继续使用`SELECT*`,但最好是明确并避免使用surpirses(比如同事添加的大型二进制blob列,不知道您) (6认同)