在SQL Server中,如何从另一个表的匹配*两*列中选择所有内容?
注意:如果你能找到一个更好的标题,请编辑它。这是一个很难用语言表达的问题 因此,假设一个包含以下列的数据表:在SQL Server中,如何从另一个表的匹配*两*列中选择所有内容?,sql,sql-server,Sql,Sql Server,注意:如果你能找到一个更好的标题,请编辑它。这是一个很难用语言表达的问题 因此,假设一个包含以下列的数据表: Stuff ===== Id, Col1ThingId, Col2ThingId, 以及相关的事物表 Things ====== Id, Name, Rank, Whatever 我想检索与Col1ThingId或Col2ThingId匹配的所有内容。我可以选择具有ID的物品: SELECT Col1ThingId, Col2ThingId FROM STUFF WHERE Id
Stuff
=====
Id, Col1ThingId, Col2ThingId,
以及相关的事物表
Things
======
Id, Name, Rank, Whatever
我想检索与Col1ThingId或Col2ThingId匹配的所有内容。我可以选择具有ID的物品:
SELECT Col1ThingId, Col2ThingId
FROM STUFF
WHERE Id = 15
这给了我这个结果:
Col1ThingId Col2ThingId
41472 41474
41510 41512
41513 41515
所以我想把这六样东西都弄到手。比如:
Select *
from Things
where Id "is contained in either column of" {
select Col1ThingId, Col2ThingId
from Stuff
where Id = 15
}
我想你把事情弄得比实际情况更复杂了。您可以在这里轻松地添加第二个连接谓词
select *
from Things t
join Stuff s on s.Col1ThingId = t.Id or s.Col2ThingId = t.Id
where s.Id = 15
我想你把事情弄得比实际情况更复杂了。您可以在这里轻松地添加第二个连接谓词
select *
from Things t
join Stuff s on s.Col1ThingId = t.Id or s.Col2ThingId = t.Id
where s.Id = 15
它将所有的ThingId作为一个结果,但是我如何用SELECT将其包装以获取内容?内部将该结果与Id上的内容连接。这将所有ThingId作为一个结果,但是我如何用SELECT将其包装以获取内容?内部将该结果与Id上的内容连接。是的,我的SQL最多只能起到补救作用;我还不知道如何用SQL思考。谢谢。是的,我的SQL充其量只是补救性的;我还不知道如何用SQL思考。谢谢
select *
from Stuff s
join Things t on t.id in (s.Col1ThingId, s.Col2ThingId)
where s.Id = 15