2012-04-05 11 views
2

2番目のクエリは最初のクエリの短い形式ですか? 2番目の人は暗黙のJOINのようなことをしていますか?彼らはどちらも同じ結果を返します...だから、どちらを使うのが良いか知りたいのですが。 SQL Server 2008を使用する。ありがとうございます。これらの2つのSQLクエリの違いは何ですか

最初のクエリ

SELECT b.columnOne, a.columnTwo 
FROM tableA As a JOIN tableB As b ON a.id = b.id 

2番目のクエリ

SELECT b.columnOne, a.columnTwo 
FROM tableA As a, tableB as b 
WHERE a.id = b.id 

答えて

4

これらは同一です。 2番目はで、ではANSI標準結合を使用していますが、最初は1です。

すべてではありませんが、多くの開発者は、論理を1つの場所に保持するので、最初のバージョン(ANSI標準)を優先します。 フィルタロジックWHERE句に格納することができます。

1

まずクエリが正しいものです。
エンジンがテーブルを結合していることを理解しているので、2番目のクエリの実行計画は最初のものとして "変換"されます。したがって、は同じです。
複数の関連するテーブルを含むクエリを使用する場合は、JOINの構文を使用する必要があります(このために生まれたため)WHEREを避けてください:エンジンがJOINの構文に変換できない場合は、あなたが各テーブル内のレコードの数を掛けるので(それはデカルト積と呼ばれます)、巨大なクエリです。

+1

これは有効なJOIN構文Marcoです。それは単なるフィルタされたデカルト積である。 – JNK

+0

@JNK:はい、わかりましたが、私の答えの最後の部分を読んでいます。私はOPに彼がテーブルを結合するためにJOINを使用すべきであることをOPに伝えようとしています; – Marco

+0

私はそれを得ました、マルコ。これは有効である(あまり明確でなく、あまり使用されていない) 'JOIN'構文なので、必要な"翻訳 "がないことを明確にしたかっただけです。 – JNK

0

私の意見では、別に結合を指定すると(最初の形式)、よりクリーンです。次に、WHERE句に検索条件を追加できます。しかし、はい2つの形式は同等です。

0

クエリは同じ結果を返します。どちらも、

は、MS SQLの記事を見てください参加 - http://www.codeproject.com/Articles/102805/SQL-Joins

まずクエリが正しいものであると私たちは参加使用条件に複数のフィルタを適用することができます - 左外部結合、 右外部結合、 完全外部結合 など

関連する問題