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

Mysql 从其他表数据填充新的DB表,mysql,sql,database,Mysql,Sql,Database,嗨,基本上我有两个表,有162个条目,我试图用其他表的条目填充一个新表,以显示数值之间的差异 Insert Into popdiff( popdiff) select (a.malepop+a.femalepop)-(b.malepop+b.femalepop) from tablea a, tableb b; 我遇到的问题是,它返回的是26244个结果,即162*162,而不是我所期望的162,经过仔细研究后,查询正在查找表a中每个条目的值-表B中的162个值 如何

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

  Insert Into popdiff(
  popdiff)
  select (a.malepop+a.femalepop)-(b.malepop+b.femalepop)     
  from tablea a, tableb b;
我遇到的问题是,它返回的是26244个结果,即162*162,而不是我所期望的162,经过仔细研究后,查询正在查找表a中每个条目的值-表B中的162个值


如何只返回162行?

您必须执行内部联接: 选择(a.malepop+a.femalepop)-(b.malepop+b.femalepop)
从表A使用(字段)连接表B


这将完成任务

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

其中:

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


当然,id可能有不同的名称,因此相应地更改
a.id=b.id
的考虑。

使用a.id=b.id上的连接b的
,而不指定连接来关联两个表之间的行,您将获得一个笛卡尔连接,它将一个表中的每一行与另一个表中的每一行链接起来。使用此建议可以正常工作感谢vp_Arth感谢我在评论中使用vp_Arth建议可以正常工作,但感谢您帮助理解此操作!
SELECT (a.malepop+a.femalepop)-(b.malepop+b.femalepop)     
FROM tablea a
INNER JOIN tableb b ON a.id = b.id;