带有子查询的 MySQL 视图
Posted
技术标签:
【中文标题】带有子查询的 MySQL 视图【英文标题】:MySQL View with a SubQuery 【发布时间】:2013-03-05 19:58:45 【问题描述】:我有以下观点,我需要从 Oracle 移植到 mysql。由于subquery cannot exist in a view
错误,这在 Oracle 中完美运行,但在 MySQL 中却不行。如何转换它以使其在 MySQL 中工作?如果我对此提出另一种看法,它将如何影响性能?可取吗?如果是这样,我该怎么做?如果第二个视图不是一个好主意,如何转换它?感谢您的帮助!
CREATE OR REPLACE VIEW view_name (var1, var2, var3, var4, var5) AS
SELECT SUM(A.var1a) var1,
SUM(A.var2a) var2,
SUM(A.var3a) var3,
SUM(A.var4a) var4,
SUM(A.var5a) var5
FROM (SELECT CASE columnx when 'abc' then COUNT(E.ID) end var1a,
CASE columnx when 'def' then COUNT(E.ID) end var2a,
CASE columnx when 'ghi' then COUNT(E.ID) end var3a,
CASE columnx when 'jkl' then COUNT(E.ID) end var4a,
COUNT(E.ID) var5a
FROM <list of tables>
WHERE <set of conditions>
GROUP BY columnx) A;
【问题讨论】:
【参考方案1】:您应该能够使用以下代码重写它:
CREATE OR REPLACE VIEW view_name (var1, var2, var3, var4, var5) AS
SELECT
sum(CASE columnx when 'abc' then 1 else 0 end) var1a,
sum(CASE columnx when 'def' then 1 else 0 end) end var2a,
sum(CASE columnx when 'ghi' then 1 else 0 end) end var3a,
sum(CASE columnx when 'jkl' then 1 else 0 end)end var4a,
COUNT(E.ID) var5a
FROM <list of tables>
WHERE <set of conditions>
【讨论】:
谢谢!我会试一试,让你知道会发生什么。谢谢! :) 绝妙的答案!在我的第一次尝试中就像一个魅力!谢谢! :) 嗨@bluefeet,你能帮我解决一个问题吗?这里:***.com/questions/15582172/…。谢谢! :)以上是关于带有子查询的 MySQL 视图的主要内容,如果未能解决你的问题,请参考以下文章