1
我正在研究一些傳統SQL(用sybase lingo編寫)並將其轉換爲SQL-92兼容表單。問題是,我無法理解「* =」的行爲。Sybase外連接行爲
查詢(適當審查):
SELECT
C.*, SUM(P.qty) from Cars C, Parts P
WHERE
C.carid = 1
AND C.carid *= P.carid
AND C.missingpart *= P.missingpart
AND C.manufacturer *= P.manufacturer
AND P.qty is not null
GROUP BY C.carid, C.missingpart, C.manufacturer
我把它轉換爲:
SELECT
C.*, SUM(P.qty) from Cars C
LEFT JOIN Parts P
ON C.carid = P.carid
AND C.missingpart = P.missingpart
AND C.manufacturer = P.manufacturer
WHERE
C.carid = 1
AND P.qty is not null
GROUP BY C.carid, C.missingpart, C.manufacturer
但事實證明 - 他們是不等價的。有人可以幫助我理解sybase外連接中「* =」的確切行爲以及爲什麼我的兩個查詢不相同?
謝謝:)
PS:我使用的是Sybase ASE的TDS 5.5
我認爲這是正確的答案。 – kolchanov 2011-04-27 18:34:01
我發現這個鏈接:http://www.sybase.com/content/1017447/tsql.pdf解釋了很多這個siht。 – jrharshath 2011-04-28 04:54:04