SQL Server - SELECT WHERE三个独立表上的三列相等?

时间:2015-12-21 21:29:41

标签: sql sql-server select

尝试进行从一个表中提取的查询,条件是在其他表的相关ID列中找到该表项的唯一ID。

这就是我现在正在做的事情:

SELECT * FROM Table1
inner join Table2 ON Table1.ID = Table2.Table1ID
inner join Table3 ON Table1.ID = Table3.Table1ID
WHERE Table1.ID = Table2.Table1ID and Table1.ID = Table3.Table1ID

例如,让我们说你是医生,而Table1是患者遭遇的清单。表2是患者诊断的列表,表3是患者治疗的列表。 Table1和Table2上的项目将始终具有Table1ID,但Table1上的项目可能并不总是在Table2或Table3上具有相应的项目。

除此之外,有没有办法做一种三等于?比如...

WHERE Table1.ID = Table2.Table1ID = Table3.Table1ID

1 个答案:

答案 0 :(得分:1)

对于这个特定问题,您只需要where条件 - 连接条件已经满足它:

SELECT     * 
FROM       Table1
INNER JOIN Table2 ON Table1.ID = Table2.Table1ID
INNER JOIN Table3 ON Table1.ID = Table3.Table1ID

作为一般性问题,一个巧妙的技巧是检查多个值是否相等是检查最小值是否等于最大值:

LEAST(a, b, c, d, e) = GREATEST(a, b, c, d, e)