假设我有这样的查询:
nama_mhs_2015 like %s
我试过了两个,都没有用。
返回错误,第一个选择中没有group by,并且where不返回任何行。
答案 0 :(得分:2)
首先你的问题有一些问题。
我猜你的意思是别名a,b,c,d .... 而不是a1,a2,g1。
此外,在创建子查询时,您的左连接应该类似于a.id = b.id
,您必须使用别名而不是tablename。
如果你修复了,你应该添加一个WHERE
,我猜你的意思是使用SUM()结果
WHERE a.A + b.B - (c.C+ d.D+ e.E+ f.F+ g.G) > 0
SELECT a.id
FROM (
SELECT id, sum(column) as sumA
FROM table1
GROUP BY id
) a
Left join
(
SELECT id, sum(column) as sumB
FROM table 2
GROUP BY Id
) b
on a.id = b.id
.
.
.
.
Left join
(
SELECT id, sum(column) as sumG
FROM table 2
GROUP BY id
) g
on f.id = g.id
WHERE a.sumA + b.sumB - (c.sumC + d.sumD + e.sumE + f.sumF + g.sumG) >0
答案 1 :(得分:1)
<强>表格强>
create table table1(id int, col int);
insert into table1 values (1, 10);
insert into table1 values (2, 20);
insert into table1 values (2, 30);
create table table2(id int, col int);
insert into table2 values (1, 5);
insert into table2 values (2, 3);
insert into table2 values (2, 2);
create table table3(id int, col int);
insert into table3 values (1, 100);
insert into table3 values (2, 20);
insert into table3 values (2, 3);
SQL
select a1.id
from (select id, sum(col) as A from table1 group by id) a1
left join (select id, sum(col) as B from table2 group by id) a2
on a1.id = a2.id
left join (select id, sum(col) as C from table3 group by id) a3
on a1.id = a3.id
where A + B - (C) > 0
您可以在SQLFiddle中添加更多表格,并提供您想要的任何值,并通过在(C)
中的C之后附加D,E,F,G等来相应地更改SQL。
上面的例子将导致2的输出,因为ID 2的A + B = 55且C = 23.A + B-C&gt;此记录为0,因此输出为2.
答案 2 :(得分:-1)
我相信你需要去掉那里的&#39;如果你仍然需要它,请将其移动。
所以它看起来像这样,
select table1.id from(
...
...
...)
Having ((A+B)-(C+D+R+F+G)>0)