首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL错误1349我错过了什么?

MySQL错误1349我错过了什么?
EN

Stack Overflow用户
提问于 2013-08-01 08:38:06
回答 2查看 8.4K关注 0票数 2

我收到MySQL 1349错误,但似乎该错误是不正确的:

代码语言:javascript
复制
ERROR 1349: View's SELECT contains a subquery in the FROM clause

在创建视图时,我可以没有任何子查询吗?

下面是我的SQL:

代码语言:javascript
复制
CREATE VIEW  `wordpress`.`ffi_be_v_book_details` AS (
  SELECT ffi_be_courses. * , COALESCE(  `Total` , 0 ) AS  `Total` 
  FROM  `ffi_be_courses` 
  LEFT JOIN (
    SELECT * , COUNT(  `Course` ) AS  `Total` 
    FROM ffi_be_courses
    RIGHT JOIN (
      SELECT  `Course` 
      FROM  `ffi_be_bookcourses` 
      LEFT JOIN  `ffi_be_sale` ON ffi_be_bookcourses.SaleID = ffi_be_sale.SaleID
      WHERE DATE_ADD( ffi_be_sale.Upload, INTERVAL( 
        SELECT  `BookExpireMonths` 
        FROM  `ffi_be_settings` ) MONTH ) > CURDATE( ) AND ffi_be_sale.Sold =  '0'
      GROUP BY ffi_be_bookcourses.SaleID
    ) AS  `q1` ON ffi_be_courses.Code = q1.Course
    GROUP BY q1.Course
  ) AS  `q2` ON ffi_be_courses.Code = q2.Code
  WHERE ffi_be_courses.Type =  'Arts'
  ORDER BY ffi_be_courses.Name ASC
)

谢谢您抽时间见我。

EN

回答 2

Stack Overflow用户

发布于 2013-08-01 08:41:17

您忽略了这样一个事实,即MySQL中的视图不允许在from子句中使用子查询。但是,它们在selectwherehaving子句中是允许的。

documentation非常清楚:

不能在视图的

子句中使用FROM子查询。

在本例中,您可以将from子句重写为select子句中的相关子查询。您还可以使用多层视图来执行您想要的操作。

编辑:

SQL中的SELECT语句包含以下子句:SELECTFROMWHEREGROUP BYHAVINGORDER BY (根据标准)。此外,MySQL还添加了LIMITINTO OUTFILE等内容。您可以从MySQL描述documentation中的SELECT子句的方式中看到这一点。您还可以在几乎所有数据库的文档中看到这一点。

诸如join之类的操作是FROM子句的一部分(类似地,WITH ROLLUPGROUP BY的一部分,DESCORDER BY的一部分)。这些可能看起来像是晦涩难懂的语法约定,但当存在像上面这样的限制时,它就变得很重要。

也许造成这种混乱的原因之一是缩进样式,如下所示:

代码语言:javascript
复制
select . . .
from t1
inner join t2
     on . . .

join语句在select下面排成一行。这是误导性的。我会这样写:

代码语言:javascript
复制
select 
from t1 join
     t2
     on . . .

只有select子句排在select.下面

票数 4
EN

Stack Overflow用户

发布于 2013-08-01 08:43:13

请参阅documentation --

视图定义受以下限制:

SELECT语句不能在FROM子句中包含子查询。

为每个FROM子句创建单独的视图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17983379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档