gpt4 book ai didi

MySQL ERROR 1349 我错过了什么?

转载 作者:行者123 更新时间:2023-11-29 04:09:08 25 4
gpt4 key购买 nike

我遇到了 MySQL 1349 错误,但看起来好像错误不正确:

ERROR 1349: View's SELECT contains a subquery in the FROM clause

创建 View 时我可以没有任何子查询吗?

这是我的 SQL:

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
)

感谢您的宝贵时间。

最佳答案

您忽略了 MySQL 中的 View 不允许 from 子句中的子查询这一事实。但是,它们在 selectwhere 以及 having 子句中是允许的。

documentation很清楚:

Subqueries cannot be used in the FROM clause of a view.

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

编辑:

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

join 等操作是 FROM 子句的一部分(类似地,WITH ROLLUPGROUP BYDESCORDER BY 的一部分)。这些可能看起来像是神秘的句法约定,但当存在上述限制时,它就变得很重要。

可能造成混淆的一个原因是缩进样式如下:

select . . .
from t1
inner join t2
on . . .

连接语句在 select 下排列的位置。这是误导。我会这样写:

select 
from t1 join
t2
on . . .

只有 select 子句在 select 下排列。

关于MySQL ERROR 1349 我错过了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17983379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com