Sql 连接两个表,但仅从其中一个表中选择行
我有两个具有相同名称和模式的表。我想加入它们,但只从其中一个表中选择行。做这件事的好方法是什么?下面的查询从两个表中选择行,但我只希望从另一个数据库中选择表a2Sql 连接两个表,但仅从其中一个表中选择行,sql,sql-server,join,Sql,Sql Server,Join,我有两个具有相同名称和模式的表。我想加入它们,但只从其中一个表中选择行。做这件事的好方法是什么?下面的查询从两个表中选择行,但我只希望从另一个数据库中选择表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 我尝试使用左外联接,但由于两个表之间的模式相同,因此这似乎不
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
我尝试使用左外联接,但由于两个表之间的模式相同,因此这似乎不起作用。
编辑:我只在select中包含“a”表列,以了解行返回的值。我只是不想从“a”返回任何行,所以我想以某种方式过滤掉这些行。只需从选择列表中删除对“a2”列的引用即可
select a.fkey_id, a.otherthing from mytable a
inner join otherdb.dbo.mytable a2 on a.fkey_id=a2.fkey_id
或
这就引出了这样一个问题:如果不想从另一个表中获取数据,为什么要加入到另一个表中。这是一种过滤方法吗?如果是这样的话,那么在性能方面最好执行exists
select a.* from mytable a
WHERE EXISTS (
SELECT 1
FROM otherdb.dbo.mytable a2
WHERE a.fkey_id=a2.fkey_id)
只需从选择列表中删除对“a2”列的引用
select a.fkey_id, a.otherthing from mytable a
inner join otherdb.dbo.mytable a2 on a.fkey_id=a2.fkey_id
或
这就引出了这样一个问题:如果不想从另一个表中获取数据,为什么要加入到另一个表中。这是一种过滤方法吗?如果是这样的话,那么在性能方面最好执行exists
select a.* from mytable a
WHERE EXISTS (
SELECT 1
FROM otherdb.dbo.mytable a2
WHERE a.fkey_id=a2.fkey_id)
因此,修改您的
Select
语句,使其仅包含您关心的字段…?只需省略a.fkey\u id
和a.otherthing
呃,不要在选择列表中引用a.anything
,如果您不想列出所有列,您只需从mytable a内部JOIN otherdb.dbo.mytable a2…@pmbAustin中选择a2.*或不使用SELECT*,只需列出所需的列(该表可能有400列),修改您的Select
语句,使其仅包含您关心的字段…?只需省略a.fkey\u id
和a.otherthing
嗯,不要在选择列表中引用a.anything
,如果您不想列出所有列,您只需从mytable a内部连接otherdb.dbo.mytable a2…@pmbAustin或不使用SELECT*选择a2.*即可列出所需的列(您所知道的该表可能有400列)。为什么*?我们确切地知道OP在哪两列之后。你看到我的第一个例子了吗?为什么*?我们确切地知道OP在哪两列。你看到我的第一个例子了吗?