3

*=右外部結合の演算子と'=*'がSQL標準から削除された理由left outer join、または少なくともSQL Server2005以降ではサポートされていない理由について知りたいと思いました。この特定の演算子に関する他のいくつかの投稿を読み、予期しない結果が生じる可能性があることを理解しています。しかし、それが意味的に同等である場合、複数のテーブルを結合する必要がある場合は、より簡単な演算子を使用できると思います。どちらかといえば、次のような正しい語順を取得しようとするのではなく、この演算子を使用して動的にSQLクエリを作成したいと思います。

FROM accounts 
LEFT OUTER JOIN customers 
ON accounts.accountnum = customers.accountnum 
LEFT OUTER JOIN products 
ON customers.accountnum = products.accountnum 
AND customers.id = products.customerid  

どこ

FROM accounts, customers, products
WHERE accounts.accountnum *= customers.accountnum AND
      customers.accountnum *= products.accountnum AND
      customers.id *= products.customer.id

一緒に解析する方が簡単なようです。

しかし、現実の世界に戻ると、これらの演算子が「真の」外部結合を実行しない場合、これらの演算子のアイデアは何でしたか?ショートハンド という用語は、まったく同じことを行う必要があることを意味しますが、この場合は明らかにそうではありません。

4

3 に答える 3

5

SQL Server MVP K. Brian Kelleyは、ここでそれをうまく説明しています。SQLServer2005が非ANSIスタイルの外部結合を許可しない理由

于 2011-10-28T20:38:41.680 に答える
1

基準から外れたとは思いません。彼らはその中にいなかったと思います。これらは、SQL-92がリリースされ、ベンダーが実装する価値があると判断するまで、ベンダーが従った単なる慣習でした。

于 2011-10-28T20:45:36.523 に答える
1

SQL-92標準より前のChrisDateの論文「OuterJoinwithNo NullsandFewerTears」をグーグル検索してください。オンラインで無料のコピーを見つけることはできませんでしたが、論文を分析し、SQLでの外部結合の素晴らしい歴史を提供するドキュメントを見つけました。最近の日付は、この種のクエリの関係値属性であり、通常は外部結合を避けるように促します;)

于 2011-10-31T13:41:09.977 に答える