2013-03-05 79 views
1

我有以下看法,我需要从Oracle移植到MySQL。这在Oracle中完美工作,但由于subquery cannot exist in a view错误,不适用于MySQL。我怎样才能转换这使它在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> 
+0

谢谢!我会给它一个镜头,让你知道发生了什么。谢谢! :) – CodingInCircles 2013-03-05 20:06:00

+0

明智的答案!我第一次尝试就像一个魅力工作!谢谢! :) – CodingInCircles 2013-03-05 20:09:46

+0

@CodingInCircles高兴地帮助,我很高兴它的工作原理。 :) – Taryn 2013-03-05 20:10:27