2013-04-16 78 views
2

我剛拿起幾個星期前某人寫的SQL語句(似乎沒有人知道是誰)。其中{table1.field} * = {table2.field}語法

作爲聲明的一部分,在WHERE條款中,它們具有類似於:{table1.field} *= {table2.samefield}

這裏究竟發生了什麼?我假設某種聯接,但是什麼加入,爲什麼,一般來說,爲什麼有人會把這個加入WHERE條款?

+0

類似於編程語言A * = B。 ---> A = A * B; – SenthilPrabhu

+0

@Senthil Prabhu:值得一想,但實際上它是Sybase中的一個左外連接運算符(非ANSI)。與Oracle對其加入運算符的專有(+)註釋相同。使用ANSI標準的SQL將是一個跨DBMS的建議。 – wmorrison365

+0

@Ben:如果你看着ANSI的問候看看http://stackoverflow.com/questions/3684259/sql-joins-future-of-the-sql-ansi-standard-where-vs-join – SenthilPrabhu

回答

1

這似乎是Sybase公司的外部連接註釋:

在結果中包括從第一個表中的所有行,而不僅僅是那些在聯接的列匹配。

參見: Sybase docs

0

它是Sybase的連接操作符相當於一個更傳統的LEFT OUTER JOIN(或更常見,LEFT JOIN

參見:SyBooks Online - The WHERE clause

* =

在結果中包含所有t他從第一張表格中排除,而不僅僅是連接列匹配的那些 。

作爲反對=*其是RIGHT OUTER JOIN(或更通常RIGHT JOIN)。