SQL Join从两个表中显示数据

时间:2016-03-24 01:16:27

标签: sql-server join sql-server-2012

有两个表(配置文件和位置)具有共同的ID字段。每个表都驻留在同一服务器上的单独数据库中。我需要显示每个表中的列。配置文件表有50条记录需要与位置表中的50条匹配记录一起显示。这是我的疑问:

SELECT a.id, a.city, b.state FROM profile a JOIN Location b on a.id=b.id

当我运行上述查询时,返回的记录超过50条。当我从查询中删除b.state时,它返回50条记录。当我向查询添加b.state时,有些不对劲。需要返回的50个州应该是根据两者之间的公共ID在“个人资料”表中与每个城市相关的州。

个人资料表数据:

列出项目

个人资料表数据: ID |城 1 | Chicag 2 |迈阿密 3 |底特律

州表数据: ID |国家|人口 1 |伊利诺伊| 10MM 2 |佛罗里达| 20MM 3 |密歇根州| 5MM 4 |弗吉尼亚| 7MM 5 |路易斯安那| 3MM

我想显示Profile表中的所有内容,以及State表中基于ID的匹配项,以显示State和Population列。

2 个答案:

答案 0 :(得分:0)

这不是一个答案,只是一个更容易使用的样本数据格式:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: illegal component position
    at java.awt.Container.addImpl(Container.java:1085)
    at java.awt.Container.add(Container.java:465)
    at javaapplication866.JavaApplication866$GradePanel.<init>(JavaApplication866.java:98)

答案 1 :(得分:0)

您需要一个内部联接来过滤掉不匹配(您的示例不详细说明要使用的联接类型):

SELECT a.id, a.city, b.state 
FROM [profile] a 
INNER JOIN Location b on a.id=b.id

也可能有重复,这意味着你可以试试这个:

SELECT DISTINCT a.id, a.city, b.state 
FROM [profile] a 
INNER JOIN Location b on a.id=b.id