从其他表数据填充新的DB表

时间:2014-04-11 13:29:20

标签: mysql sql database

您好基本上我有2个表,有162个条目,我试图用其他表中的条目填充新表,以显示数值之间的差异

  Insert Into popdiff(
  popdiff)
  select (a.malepop+a.femalepop)-(b.malepop+b.femalepop)     
  from tablea a, tableb b;

我遇到的问题是它返回26244个结果,即162 * 162而不是162,我期待的,已经调查了一下查询是找到表中每个条目的值 - tableb中的162个值

我怎么能简单地只返回162行?

2 个答案:

答案 0 :(得分:0)

你必须做一个内部联接: 选择(a.malepop + a.femalepop) - (b.malepop + b.femalepop)
  from tableA使用(field)

连接tableB

那将完成这项工作

答案 1 :(得分:0)

您没有指定两个表之间的关系,而这是一个交叉连接,它返回您描述的内容。以WHERE条件或JOIN条件指定关系。

其中:

SELECT (a.malepop+a.femalepop)-(b.malepop+b.femalepop)     
FROM tablea a, tableb b;
WHERE a.id = b.id;

JOIN:

SELECT (a.malepop+a.femalepop)-(b.malepop+b.femalepop)     
FROM tablea a
INNER JOIN tableb b ON a.id = b.id;

当然,您可能有不同的ID名称,因此请相应地更改a.id = b.id