MySQL创建视图错误

Posted

技术标签:

【中文标题】MySQL创建视图错误【英文标题】:MySQL create view error 【发布时间】:2015-08-27 06:53:10 【问题描述】:

这是我使用 mysql/MySQL WorkBench 创建视图和相关错误消息的语句。我尝试了 select -- from -- where 工作。任何提示表示赞赏。 :)

CREATE VIEW [Products Above Average Price] AS            
SELECT ProductName,Price
FROM Products
WHERE Price>(SELECT AVG(Price) FROM Products)

错误代码:1064。您的 SQL 语法有错误;查看与您的 MySQL 服务器版本相对应的手册,以了解在 '[Products Above Average Price] AS #how to? 附近使用的正确语法。 SELECT ProductName,Price ' 在第 1 行

【问题讨论】:

MySQL 使用反引号而不是 []。 为我工作,谢谢@jarlh。如果您有正式的答案,我可以帮助标记为答案,以使遇到同样问题的其他人受益。 :) 已经有一个有用的问题:***.com/questions/11321491/… 【参考方案1】:

您必须使用 ANSI 标准双引号 "" 而不是 [] 括号。

CREATE VIEW "Products Above Average Price" AS 
SELECT ProductName,Price
FROM Products
WHERE Price>(SELECT AVG(Price) FROM Products)

【讨论】:

【参考方案2】:

这是在 MySQL 中创建视图的样子

Create View `MyViewName` as 
    Select
        col1, col2, col3
    From
        myTable T

在您的情况下,由于[] 未在 MySQL 中使用而出现问题。用

替换您的查询
CREATE VIEW `Products Above Average Price` AS            
    SELECT ProductName,Price
    FROM Products
    WHERE Price>(SELECT AVG(Price) FROM Products)

【讨论】:

【参考方案3】:

(复制评论) ANSI SQL 有双引号 ("") 用于分隔标识符,例如

CREATE VIEW "Products Above Average Price" AS...

MS SQL Server 也有 [] 作为供应商特定的方式来分隔标识符,例如

CREATE VIEW [Products Above Average Price] AS...

MySQL 有反引号,例如

CREATE VIEW `Products Above Average Price` AS...

【讨论】:

以上是关于MySQL创建视图错误的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 创建视图

在 Mysql 中自动创建视图

MySQL创建视图连接两个完整的表

过去 30 天为 MYSQL 创建视图

Mysql 无法创建/写入文件错误#13

mysql多表查询并创建视图