我有三个表(t1,t2,t3),它们是彼此的精确副本。每个表都有列a,b,c,它们是随机整数。
我想查询t1.a = t2.b = t3.c。
但是,如果我查询t1.a = t2.b = t3.c,我会得到错误的结果。看起来每一行都在加入。这是为什么?
如果我查询t1.a = t2.b和t2.b = t3.c,我的查询会返回好的结果。
我应该指定t1.a = t2.b和t2.b = t3.c和t1.a = t3.c吗?
逻辑上表达t1.a = t2.b = t3.c的最佳方法是什么?
答案 0 :(得分:1)
对于过滤条件 a = b = c 指定
t1.a = t2.b and t2.b = t3.c
应该足以达到目的。
答案 1 :(得分:1)
试试这个,因为这会逐步过滤结果:
table1
和table2
(让我们说这个结果filteredResult1
)filteredResult1
和table3
(让我们坐下吧) filteredFinalResult
)filteredFinalResult :
SELECT
t1.*, t2.*, t3.*
FROM
table1 t1
INNER JOIN
table2 t2
ON
t1.a = t2.b
INNER JOIN
table3 t3
ON
t2.b = t3.c