我有两个名称和架构相同的表。我想加入它们,但只从其中一个表中选择行。有什么好办法呢?下面的查询选择两个表中的行,但我只想要来自另一个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"返回任何行,所以我想以某种方式过滤掉这些行。
答案 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)