2011-07-04 71 views
2

可以将下面的查询合并为单个查询,我基本上有兴趣获得最后查询给出的结果。结合数学查询MySQL

#This is wrong SQL only intended as pseudocode 

SELECT sum(amt) u FROM entry WHERE en_type='some_type' AND num='some_num'; 
SELECT sum(amt) v FROM entry WHERE en_type='some_other_type' AND num='some_num'; 
SELECT abal x FROM accounts WHERE num='the_same_num_as_above'; 
SELECT y = x + v - u; 
+0

u = v在你的例子中... –

+0

我编辑了这个问题。现在它不会暗示u = v。 – SRM

回答

0

使用子查询,你可以这样做:

SELECT -(SELECT sum(amt) u FROM entry WHERE en_type='some_type' AND num='some_num') 
     + (SELECT sum(amt) v FROM entry WHERE en_type='some_type' AND num='some_num') 
     + (SELECT abal x FROM accounts WHERE num='the_same_num_as_above') AS y; 
0

使用UNION,使合成三排表,然后总结一下吧。

SELECT SUM(x) y FROM 
(
    SELECT sum(amt) AS x FROM entry WHERE en_type='some_type' AND num='some_num' 
    UNION ALL 
    SELECT sum(amt) AS x FROM entry WHERE en_type='some_type' AND num='some_num' 
    UNION ALL 
    SELECT -abal AS x FROM accounts WHERE num='the_same_num_as_above' 
) A 

我不知道我理解你的'the_same_num'的东西,所以你需要解决这个问题。

+0

这只是暗示num保持不变。 :) – SRM