SQL'where语句'没有加入

时间:2013-01-10 19:22:04

标签: sql join where

是否可以在不加入其他表的情况下执行WHERE语句? 例如:

Table1(t1_id,name)

Table2(t2_id, fk_t1_id, something)

Table3(t3_id, fk_t2_id, blah)

我想这样做:

SELECT name, something 
FROM table1 
JOIN table2 ON t1_id = fk_t1_id 
WHERE blah = 'somestring'

或者我是否也必须加入table3才能使WHERE语句生效?

5 个答案:

答案 0 :(得分:1)

在您的示例中,您需要Table3才能访问blah列。其他两个表不知道blah是什么。

答案 1 :(得分:1)

您必须加入table3。除非您在查询中包含该表,否则查询解析器无法知道您想要该表中的内容或进行比较。

SELECT name, something
FROM table1 t1
JOIN table2 t2 ON t1.t1_id = t2.fk_t1_id
JOIN table3 t3 ON t2.t2_id = t3.fk_t2_id
WHERE t3.blah = 'somestring'

答案 2 :(得分:0)

是的,您需要加入Table3。

答案 3 :(得分:0)

您可以在条件

中执行子字符串
SELECT name, something 
FROM table1 JOIN table2 ON t1_id = fk_t1_id 
WHERE blah IN (Select blah from table3)

答案 4 :(得分:0)

半连接可以使用而不是table3上的内连接:

SELECT t1.name, t2.something
FROM table1 t1
JOIN table2 t2 ON t1.t1_id = t2.fk_t1_id
WHERE t2.t2_id IN (SELECT fk_t2_id FROM table3 WHERE blah = 'something')