2

これが左外部結合の正しいAnsi SQL 構文であると仮定します。

SELECT *  
FROM   employee  LEFT OUTER JOIN department  
          ON employee.DepartmentID = department.DepartmentID

そして、これは右外部結合の正しいAnsi SQL 構文です。

SELECT * 
FROM   employee RIGHT OUTER JOIN department 
          ON employee.DepartmentID = department.DepartmentID

これは、左外部結合に相当する古いSybaseですか?

SELECT * FROM employee, department
WHERE employee.DepartmentID *= department.DepartmentID

そして、これは右外部結合に相当する古いSybaseです。

SELECT * FROM employee, department
WHERE employee.DepartmentID =* department.DepartmentID

そのため、左外部結合の場合は等号の左側に * を配置し、右外部結合の場合は等号の右側に * を配置します。

あれは正しいですか?

4

4 に答える 4

3

*=左外部結合と...右外部結合に相当し=*ます(ご想像のとおり)

*=*古いリリースの Sybase ASE では がサポートされていないことに注意してください。Transact-SQL 外部結合のセマンティクスと互換性でその理由を説明 (PDF)

于 2009-06-12T20:35:05.790 に答える
2

はい。ただし、結果のセットを where で処理する場合、これら 2 つが少し異なる場合があります。

于 2012-03-28T07:23:29.053 に答える
1

左結合から古い構文に変換するのはなぜですか?古い構文から優先される新しい標準に変換するべきではありませんか? Sybaseについては知りませんが、SQl ServerはSybaseに基づいているため、古い構文が外部結合として常に正しく解釈されるとは限らないという同じ問題があると思われます。場合によっては、データベースがクロス ジョインとして解釈することがあるため、新しい構文が使用できないほど古いバージョンのデータベースにアクセスする場合を除き、一般的には使用しないことをお勧めします。

于 2009-06-12T20:49:27.580 に答える