是否可以在不加入其他表的情况下执行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
语句生效?
答案 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')