【问题标题】:MySQL Error Code: 1349. View's SELECT contains a subquery in the FROM clauseMySQL 错误代码:1349。视图的 SELECT 在 FROM 子句中包含子查询
【发布时间】:2014-07-09 00:39:42
【问题描述】:

我正在尝试创建视图但收到以下错误:

视图的 SELECT 在 FROM 子句中包含子查询

我正在运行以下命令。我似乎无法弄清楚如何用连接替换嵌套选择。任何帮助将不胜感激!

create view student_fee_basic as
select fsbc.*, ffp.name, ffp.amount 'fee'
from
(select sbc.*, ffc.name 'fname', ffc.id 'fid'
    from (select s.admission_no, s.first_name, bc.id 'bid', bc.code, bc.name
        from (select b.id, b.name, c.code
            from batches b, courses c
            where b.name = '2014-2015'
            and b.course_id = c.id) bc
        left join students s on bc.id = s.batch_id) sbc
    left join finance_fee_categories ffc on ffc.batch_id = sbc.bid
    where ffc.name = 'Basic Monthly') fsbc
left join finance_fee_particulars ffp on ffp.finance_fee_category_id = fsbc.fid;

【问题讨论】:

标签: mysql sql database


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    5.7 版支持它。 所以解决它的一种方法是将数据库迁移到更新的版本

    【讨论】:

      【解决方案3】:

      MySQL 不支持视图中的子查询:

      子查询不能用在视图的 FROM 子句中。

      文档是here

      最简单的解决方法是为每个级别使用一系列不同的视图。

      您可能可以重写此查询以删除子查询。但是,如果没有显式连接,我发现很难提供帮助。

      【讨论】:

      • 太棒了!谢谢!我能够在不使用嵌套选择的情况下构建连接;看来我只需要能够做到的信心。
      猜你喜欢
      • 2014-06-21
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-17
      • 1970-01-01
      • 2012-08-28
      相关资源
      最近更新 更多