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

Posted

技术标签:

【中文标题】错误 #1349:View 的 select cluse 在 from 子句中包含子查询【英文标题】:Error #1349: View's select cluse contains a subquery in the from clause 【发布时间】:2014-05-05 07:02:10 【问题描述】:

这是我的代码:

SELECT CAST.first_name,
  CAST.last_name,
  AWARDED.castID,
  COUNT(*) AwardsWon
FROM AWARDED,
  ROLE,
  CAST
WHERE ROLE.role    = "Director"
AND ROLE.castID    = AWARDED.castID
AND ROLE.movieID   = AWARDED.movieID
AND AWARDED.castID = CAST.castID
GROUP BY castID
HAVING COUNT(*) =
  (SELECT MAX(cnt) FROM
    (SELECT COUNT(*) cnt FROM AWARDED GROUP BY CastID
    ) z
  )

当我尝试从此代码创建视图时,我收到以下形式的错误:#1349 视图的选择在 from 子句中包含子查询。有什么办法可以解决这个问题吗?

【问题讨论】:

【参考方案1】:

声明说...

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

您的解决方法是为每个子查询创建一个视图。

然后从您的视图中访问这些视图

【讨论】:

不确定这有什么帮助。【参考方案2】:

如果我没记错的话,您使用的是 mysql。不确定,但您所说的查询可以转换如下。试一试。

SELECT `CAST`.first_name,
  `CAST`.last_name,
  AWARDED.castID,
  COUNT(AWARDED.castID) AwardsWon
FROM AWARDED
JOIN ROLE
ON ROLE.movieID = AWARDED.movieID
AND ROLE.castID = AWARDED.castID
JOIN `CAST`
ON AWARDED.castID = `CAST`.castID
WHERE ROLE.role = 'Director'
GROUP BY AWARDED.castID,`CAST`.first_name,`CAST`.last_name
HAVING COUNT(*) = MAX(AwardsWon);

【讨论】:

以上是关于错误 #1349:View 的 select cluse 在 from 子句中包含子查询的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

CreateProcessWithUser 无法模拟用户,出现错误 87、1349

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

51 Nod 1349 最大值