我剛拿起幾個星期前某人寫的SQL語句(似乎沒有人知道是誰)。其中{table1.field} * = {table2.field}語法
作爲聲明的一部分,在WHERE
條款中,它們具有類似於:{table1.field} *= {table2.samefield}
。
這裏究竟發生了什麼?我假設某種聯接,但是什麼加入,爲什麼,一般來說,爲什麼有人會把這個加入WHERE
條款?
我剛拿起幾個星期前某人寫的SQL語句(似乎沒有人知道是誰)。其中{table1.field} * = {table2.field}語法
作爲聲明的一部分,在WHERE
條款中,它們具有類似於:{table1.field} *= {table2.samefield}
。
這裏究竟發生了什麼?我假設某種聯接,但是什麼加入,爲什麼,一般來說,爲什麼有人會把這個加入WHERE
條款?
它是Sybase的連接操作符相當於一個更傳統的LEFT OUTER JOIN
(或更常見,LEFT JOIN
參見:SyBooks Online - The WHERE
clause
* =
在結果中包含所有t他從第一張表格中排除,而不僅僅是連接列匹配的那些 。
作爲反對=*
其是RIGHT OUTER JOIN
(或更通常RIGHT JOIN
)。
類似於編程語言A * = B。 ---> A = A * B; – SenthilPrabhu
@Senthil Prabhu:值得一想,但實際上它是Sybase中的一個左外連接運算符(非ANSI)。與Oracle對其加入運算符的專有(+)註釋相同。使用ANSI標準的SQL將是一個跨DBMS的建議。 – wmorrison365
@Ben:如果你看着ANSI的問候看看http://stackoverflow.com/questions/3684259/sql-joins-future-of-the-sql-ansi-standard-where-vs-join – SenthilPrabhu