簡體   English   中英

在 Postgresql 中不使用 INNER JOIN 的地方

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM