2008-09-02 76 views
9

我正在維護一些在查詢中使用* =操作符的代碼,但我找不到關於它的文檔。有人知道* =做什麼嗎?我認爲這是某種聯接。* =在Sybase SQL中

select * from a, b where a.id *= b.id

我不能找出如何,這是從不同:

select * from a, b where a.id = b.id
+0

請保持小心。它現在已被棄用,並且需要對數據庫配置進行明確的激活。 – frlan 2015-01-10 18:25:38

回答

12

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc34982_1500/html/mig_gde/mig_gde160.htm

內和外表

術語外部表和內部表中描述的外表的位置加入:

  • 在左連接中,外部表格和內部表格分別是左側表格和右側表格。外部表和內部表也分別稱爲行保留和空值表。

  • 在右連接中,外部表和內部表分別是右側和左側表。

例如,在下面的查詢,T1是外部表,T2是內部表:

  • T1左加入T2
  • T2右連接T1

或者,使用Transact-SQL語法:

  • T1 * = T2
  • T2 = * T1
+1

哇,謝謝sybase使這個聲音變得混亂和混亂。 – 2010-04-17 08:35:13

+0

它看起來是你提供的關於不同事物的鏈接。 – Trismegistos 2013-04-18 09:15:43

9

這意味着外連接,一個簡單=表示內連接。

*= is LEFT JOIN and =* is RIGHT JOIN. 

(或反之,我一直忘了,因爲我不使用它了,而對於* =搜索時,谷歌是沒有幫助)

+0

這個答案是對的。 – 2010-04-16 10:02:34

6

當然,你應該是這樣:

SELECT * 
FROM a 
LEFT JOIN b ON b.id=a.id 

的A,B的語法是邪惡的。

+0

我不知道邪惡,但它肯定是Sybase和Microsoft SQL Server專有的,並且不受其他品牌的數據庫支持。 – 2008-10-23 19:29:46

0
select * from a, b where a.id = b.id

要求連續在b.id = a.id存在爲了返回答案

select * from a, b where a.id *= b.id

會從B與空值的欄時,有沒有在一排b where b.id = a.id.

5

ANSI-82語法

select 
    * 
from 
    a 
    , b 

where 
    a.id *= b.id 

ANSI-92

select 
    * 
from 
    a 
    left outer join b 
     on a.id = b.id