使用另一个表中的sum值过滤表

时间:2014-02-06 09:09:30

标签: sql postgresql

使用PostgreSQL,我试图使用另一个数据从表中过滤数据。这是一个例子:

表1:

  id|app|area_app
   1| A |   4.7
   2| A |   4.7
   3| A |   4.7

表2:

  id|spart|area_spart
   1| 1a  |   1.2
   1| 1b  |   1.8
   2| 2a  |   2.1
   2| 2b  |   2.3
   3| 3a  |   0.6

我想过滤第二个表,选择第一个表的area_spart总和等于第一个表的area_app的行(第一个表的id相同);在此示例中,结果表应为:

 id|spart|area_spart
  1| 1b  |   1.8
  2| 2b  |   2.3
  3| 3a  |   0.6

总area_spart = area_APP = 4.7

谢谢大家!

1 个答案:

答案 0 :(得分:0)

如果您从表中获取重复记录,请使用INNER JOIN

SELECT table1.id,table2.spart,SUM(table2.area_spart) AS area_spart FROM table1 INNER JOIN table2 ON (table1.id = table2.id) GROUP BY table1.id

如果您正在获取基于身份的记录,请使用此

SELECT table1.id,table2.spart,SUM(table2.area_spart) AS area_spart FROM table1 INNER JOIN table2 ON (table1.id = table2.id) WHERE table1.id = 'your_id'

如果您的记录不是基于ID而只想获得一条记录,请尝试使用LIMIT

SELECT table1.id,table2.spart,SUM(table2.area_spart) AS area_spart FROM table1 INNER JOIN table2 ON (table1.id = table2.id) LIMIT 1