首页 >数据库 >mysql教程 >如何解决MySQL中的'视图的SELECT在FROM子句中包含子查询”错误?

如何解决MySQL中的'视图的SELECT在FROM子句中包含子查询”错误?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-25 22:13:13679浏览

How to Resolve the

“视图的 SELECT 在 FROM 子句中包含子查询”:解决问题

尝试基于两个表创建视图时, Credit_orders 和 Credit_usage 时,查询返回错误,指示“视图的 SELECT 在 FROM 子句中包含子查询”。出现此错误的原因是 MySQL 文档明确禁止视图 SELECT 语句的 FROM 子句中存在子查询。

要解决此问题并成功创建视图,需要为每个子查询创建单独的视图。这涉及到为购买的积分计算和使用的积分创建中间视图。

对于购买的积分计算,可以使用以下查询:

CREATE VIEW view_purchased_credits AS
SELECT
  client_id,
  SUM(number_of_credits) AS purchased
FROM credit_orders
GROUP BY client_id;

对于使用的积分计算,可以使用以下查询:

CREATE VIEW view_credits_used AS
SELECT
  client_id,
  SUM(credits_used) AS used
FROM credit_usage
GROUP BY client_id;

创建这些中间视图后,就可以创建通过访问中间视图来查看 view_credit_status 视图:

CREATE VIEW view_credit_status AS
SELECT
  co.client_id,
  v1.purchased,
  v2.used
FROM credit_orders AS co
LEFT JOIN view_purchased_credits AS v1
  ON v1.client_id = co.client_id
LEFT JOIN view_credits_used AS v2
  ON v2.client_id = co.client_id
WHERE
  co.payment_status = 'Paid';

通过消除 FROM 子句中的子查询并使用中间视图,可以成功创建 view_credit_status 视图,而不会触发与 FROM 子句中的子查询相关的错误。

以上是如何解决MySQL中的'视图的SELECT在FROM子句中包含子查询”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn