【问题标题】:In sql 2008 R2, how do i join 2 columns from one table with 2 columns in another table?在 sql 2008 R2 中,如何将一个表中的 2 列与另一个表中的 2 列连接起来?
【发布时间】:2012-10-06 17:32:14
【问题描述】:

我有 2 张桌子。在表 1 中,我有 2 列——cust_npa 和 cust_nxx。在表 2 中,我有 2 列——valid_npa 和 valid_nxx。 table2.valid_npa 中的每个条目在 table2.valid_nxx 中都有对应的条目。

valid_npa   valid_nxx
201         551
201         552
201         553
202         851
202         852

我希望从 table2 返回 table1 中具有 valid_nap 和 valid_nxx 组合的所有行。

例如,table1 中 cust_npa 为 201 且 cust_nxx 为 852 的行将不会被返回(因为这不是来自 table2 的有效组合)。

【问题讨论】:

    标签: sql-server-2008 inner-join multiple-columns


    【解决方案1】:
    select valid_npa, valid_nxx from table2
    intersect
    select cust_npa, cust_nxx from table1
    

    【讨论】:

    • 这个查询产生的结果与上面提供的结果有很大不同吗?
    • Intersect 将返回不同的结果,而没有 distinct 的内部联接将返回多个相同的行。
    • 哦,有道理。就我而言,我希望看到多个相同的行。感谢您为我澄清这一点!
    【解决方案2】:
    select * from table_A as A
    inner join table_B as B
    on A.id = B.id and A.name = B.name
    

    【讨论】:

    • table1和table2在不同的数据库有关系吗?
    • 如果它们在不同的数据库中,你可以创建同义词并使用它们,如果不同的表根本没有。
    • 谢谢,这很有帮助。我是整个 SQL 游戏的新手,这看起来很简单——当然,事后诸葛亮。
    • 如果我正在寻找相反的结果,即返回 table1 中没有来自 table2 的 valid_npa 和 valid_nxx 组合的所有行,我是否只使用 运算符?
    猜你喜欢
    • 2018-12-14
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    相关资源
    最近更新 更多