加入2个表,但只选择其中一个表中的行

时间:2014-09-05 17:48:31

标签: sql sql-server join

我有两个名称和架构相同的表。我想加入它们,但只从其中一个表中选择行。有什么好办法呢?下面的查询选择两个表中的行,但我只想要来自另一个DB的表a2。

select a.fkey_id, a2.fkeyid_id, a.otherthing, a2.otherthing from mytable a 
    inner join otherdb.dbo.mytable a2 on a.fkey_id=a2.fkey_id

我尝试使用左外连接,但由于两个表之间的模式相同,所以这似乎不起作用。 编辑:我只包括" a" select中的表列可以了解行返回的值。我只是不想要从" a"返回任何行,所以我想以某种方式过滤掉这些行。

2 个答案:

答案 0 :(得分:3)

只需取出" a2"选择列表中的列。

select a.fkey_id, a.otherthing from mytable a 
    inner join otherdb.dbo.mytable a2 on a.fkey_id=a2.fkey_id

OR

select a.* from mytable a 
    inner join otherdb.dbo.mytable a2 on a.fkey_id=a2.fkey_id

如果你不想从中获取数据,那么就会引起你加入另一张桌子的问题。这是一种过滤方法吗?如果是这样,做一个存在会更好地表现。

select a.* from mytable a 
 WHERE EXISTS (
      SELECT 1
      FROM otherdb.dbo.mytable a2 
      WHERE a.fkey_id=a2.fkey_id)

答案 1 :(得分:2)

select a.fkey_id
     , a.otherthing
from mytable a 
WHERE EXISTS (SELECT 1 
              FROM  otherdb.dbo.mytable a2
              WHERE a.fkey_id=a2.fkey_id)