表1的SQL查询差异与外键引用的表2子项的总和相比较

时间:2017-06-22 08:20:36

标签: mysql foreign-key-relationship

我们说我有两张桌子:

表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,但应用相同的规则

我该怎么做?

1 个答案:

答案 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
   )
);