“视图的 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中文网其他相关文章!