我们说我有两张桌子:
表1
ID Name Quantity
1 Pencil 12
2 Pen 35
3 Ruler 50
表2
ID Name Quantity FK_Table1
1 Pencil 6 1
2 Pencil 6 1
3 Pen 10 2
4 Pen 5 2
5 Pen 5 2
6 Pen 5 2
7 Ruler 12 3
8 Ruler 12 3
9 Ruler 12 3
10 Ruler 12 3
我需要创建一个查询,从数量列中仅选择table1中的行,它与表2中具有相同FK_Table1值的所有数量列的总和不匹配
(例如,铅笔不会被选中,因为它在表1中的数量是12,与表2中的行ID#1和2的数量之和相同)。
我需要创建一个查询,选择table2行而不是table1,但应用相同的规则
我该怎么做?
答案 0 :(得分:2)
尝试以下查询:
select * from table1 t1
where t1.Quantity <> (select sum(t2.Quantity) from table2 t2 where t2.FK_Table1 = t1.ID);
获取表2的记录:
select * from table2 where FK_Table1 IN(
select t1.ID from table1 t1
where t1.Quantity <> (
select sum(t2.Quantity) from table2 t2 where t2.FK_Table1 = t1.ID
)
);