请教高手
如何知道Mysql视图是由那些表组成的?

解决方案 »

  1.   

    如果5。X以上
    select * from information_schemaVIEWS where TABLE_NAME='viewname'
    分拆SQL语句
      

  2.   

    mysql> select view_definition from views where table_name='v_t';
    +------------------------------------------------+
    | view_definition                                |
    +------------------------------------------------+
    | select `test`.`t`.`id` AS `id` from `test`.`t` |
    +------------------------------------------------+
    1 row in set (0.00 sec)
    解析得到的view_definition值,截取from和后边可能的where等词之间的部分
      

  3.   

    没有直接的方法来得到由哪些表组成。
    不过你按楼上的办法得到VIEW的SELECT语句。 然后自己通过语法分析得到有哪些表或者VIEW
      

  4.   

    如果5。X以上
    select * from information_schema.VIEWS where TABLE_NAME='viewname'
    分拆SQL语句比较麻烦,为什么要得到表名?
      

  5.   

    分析sql语句是知道的,就是想找一个更简单的像sqlserver一样直接查系统表可以获取
      

  6.   

    用mysqlyog之类的前端工具,直接看该视图的定义就可以~~~~
      

  7.   

    MYSQL不是SQLSEVER,没有这样的系统表,
    information_schema.VIEWS是MYSQL的系统表,其中只有VIEW的SQL代码
      

  8.   


    **********************************
    有系统库information_schema,在其中的表VIEWS中有记录所有的视图。
      

  9.   

     
    use information_schema;
    select view_definition from views where table_name=‘viewname';
      

  10.   

    如果views是你建的,或者在可能的情况下,在建view的时候,不使用表别名。比如:CREATE OR VIEW v_test AS
    SELECT * FROM test WHERE id % 2 = 0
    UNION ALL
    SELECT * FROM test WHERE id % 2 = 1如果满足这个条件,可以使用
    explain SELECT * FROM v_test;id select_type table type
    1 PRIMARY <derived2> system
    2 DERIVED test ALL
    3 UNION test ALL
    UNION RESULT <union2,3> ALL解析table列,去除<xxxx>,得到所有涉及到的表(或者它的表名)