[英]WHERE not working with INNER JOIN in Postgresql
當我運行時:
SELECT * from actor inner join film_actor fa ON actor.actor_id = fa.actor_id
我得到結果。
但是運行:
SELECT * from actor inner join film_actor fa WHERE actor.actor_id = fa.actor_id
它給出了錯誤:
錯誤:“WHERE”處或附近的語法錯誤
據我了解,在這種情況下,WHERE 是正確的用法。
任何輸入都會有所幫助。
據我了解,在這種情況下,WHERE 是正確的用法。
不,你誤解了這一點。
WHERE 子句出現在所有 JOIN 子句之后,它永遠不能成為 JOIN條件的一部分。
JOIN 的一般格式是:
table_b JOIN table_b ON <some_condition>
該部分不允許WHERE
。 唯一的變化是不同類型的聯接( left join
聯接、 full join
聯接、 right join
聯接)。 連接始終遵循 FROM 子句。 只有完全指定所有連接(包括使用ON
的連接條件),您才能開始編寫WHERE
子句。
暫時忽略子查詢和派生表,您可以將FROM
子句想象為“一件大事”,並且只有當它完整時,您才允許編寫WHERE
子句。
也許你在想古老的、過時的和脆弱的隱式連接:
SELECT *
from actor,
film_actor fa
WHERE actor.actor_id = fa.actor_id
但是在ON
子句中使用帶有連接條件的顯式JOIN
運算符是更好的編碼風格。 不要習慣過時和古老的隱式連接。
對於您想要的那種語法風格
SELECT * from actor, film_actor fa WHERE actor.actor_id = fa.actor_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.