#1349 - 视图的 SELECT 在 FROM 子句中包含一个子查询

Posted

技术标签:

【中文标题】#1349 - 视图的 SELECT 在 FROM 子句中包含一个子查询【英文标题】:#1349 - View's SELECT contains a subquery in the FROM clause 【发布时间】:2020-02-08 10:05:58 【问题描述】:

我需要修改 mysql 代码以传递此错误并获得相同的结果。


我使用 localhost 和 Xampp ..

Apache/2.4.29 (Win32) OpenSSL/1.1.0g php/7.2.1 服务器类型:MariaDB 服务器版本:10.1.30-MariaDB - mariadb.org 二进制分发版 数据库客户端版本:libmysql - mysqlnd 5.0.12-dev - 20150407 PhpMyAdmin 版本信息:4.7.4,最新稳定版本:4.9.1
CREATE VIEW product_variation_stock_view AS
                SELECT 
                    product_variations.product_id AS product_id,
                    product_variations.id AS product_variation_id,
                    COALESCE(SUM(stocks.quantity) - COALESCE(SUM(product_variation_order.quantity), 0), 0) AS stock,
                    CASE WHEN COALESCE(SUM(stocks.quantity) - COALESCE(SUM(product_variation_order.quantity), 0), 0) > 0
                        THEN true
                        ELSE false
                    END in_stock
                FROM product_variations
                LEFT JOIN(
                    SELECT stocks.product_variation_id AS id,
                    SUM(stocks.quantity) AS quantity
                    FROM stocks
                    GROUP BY stocks.product_variation_id
                ) AS stocks USING (id)
                LEFT JOIN (
                    SELECT
                        product_variation_order.product_variation_id AS id,
                        SUM(product_variation_order.quantity) AS quantity
                    FROM product_variation_order
                    GROUP BY product_variation_order.product_variation_id
                ) AS product_variation_order USING (id)
                GROUP BY product_variations.id

MySQL 说:

#1349 - View 的 SELECT 在 FROM 子句中包含子查询

【问题讨论】:

你用的是哪个mysql版本的workbench,mysql 8没问题 我使用 localhost 和 xampp .. Apache/2.4.29 (Win32) OpenSSL/1.1.0g PHP/7.2.1 |数据库客户端版本:libmysql - mysqlnd 5.0.12-dev - 20150407 | phpmyadmin 版本信息:4.7.4,最新稳定版本:4.9.1 请在 phpmyadmin 中使用 select @@version 10.1.30-MariaDB @nbk @nbk 对吗? 【参考方案1】:

升级到mysql-8,我的问题就解决了。


要升级 XAMPP 中包含的 MySql(我是在 Windows 系统上完成的):

    将您的 Mysql 目录重命名为其他名称。 从 MariaDB 链接 https://downloads.mariadb.org/ 下载 .msi 文件。 运行 .msi。将安装目录更改为 XAMPP 下的 Mysql 位置。 完成后,将旧的 my.ini 从原来的 mysql/bin 目录复制到新的 mysql/bin 目录。 您应该可以从 XAMPP 控制面板启动 Mysql。

我在这里找到了解决方案 http://www.mynotebucket.com/update-mysql-under-xmpp/

【讨论】:

请提交一个针对 MariaDB 的错误。【参考方案2】:

您需要升级您的 MySQL。如果由于某种原因您无法这样做,您可以为子查询创建视图并将它们集成到您的查询中。

【讨论】:

以上是关于#1349 - 视图的 SELECT 在 FROM 子句中包含一个子查询的主要内容,如果未能解决你的问题,请参考以下文章

ERROR 1349 (HY000): View 的 SELECT 在 FROM 子句中包含子查询

错误 #1349:View 的 select cluse 在 from 子句中包含子查询

如何在 from 子句中使用子查询创建视图 - Mariadb

MySql VIEW 删除 FROM 条件下的子查询

带有联合错误的 MySQL 视图 - “视图的 SELECT 包含 FROM 子句中的子查询”

GRANT SELECT ON view TO user using script on SQL developer, 而不是 SELECT * FROM SQL Plus 中的那个视图