【问题标题】:Need help on syntax error in CREATE VIEW需要有关 CREATE VIEW 中的语法错误的帮助
【发布时间】:2018-05-22 16:54:03
【问题描述】:

我之前创建了 2 个视图,如下所示:

CREATE VIEW T22 
AS
    (SELECT anumber, AVG(slevel) 
     FROM SPOSSESSED
     GROUP BY anumber);

CREATE VIEW T23 (anumber, slevel) 
AS
    (SELECT anumber, 0 
     FROM APPLICANT 
     WHERE anumber NOT IN (SELECT anumber FROM SPOSSESSED));

现在,我需要创建作为上述两个视图的 UNION 的视图。我尝试了这个完全正常的语句并显示了我想要的结果:

SELECT * 
FROM T22 
UNION 
SELECT * 
FROM T23;

但是当我尝试为此创建一个视图时,它有一个我似乎无法识别的语法错误:

CREATE VIEW T24 
AS 
   (SELECT * 
    FROM T22 
    UNION 
    SELECT * 
    FROM T23);

【问题讨论】:

  • 错误信息是?
  • 错误 1064,语法错误。发现了问题,显然这是一个错误的解决方案是删除括号

标签: mysql view union


【解决方案1】:

我自己解决了这个问题,opps!

解决办法就是去掉括号,语法错误就消失了:

CREATE VIEW T24 AS SELECT* FROM T22 UNION SELECT * FROM T23;

【讨论】:

    【解决方案2】:

    列的命名模式有冲突,在这种情况下不能使用SELECT *。但是,您可以更改 anumber 并将其别名为其他名称。解决问题。

    类似:

    CREATE VIEW T24
    AS
    (
            SELECT anumber AS anumber1,
                AVG(slevel)
            FROM T22
    
            UNION
    
            SELECT anumber,
                slevel
            FROM T23
            );
    

    【讨论】:

      【解决方案3】:

      表 t22 和表 t23 中的数据类型是否匹配? 列数是否匹配? 请发布您遇到的错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-08
        • 1970-01-01
        • 2017-10-09
        • 1970-01-01
        • 2021-12-11
        相关资源
        最近更新 更多