1

このクエリの違いは何ですか? どちらを優先する必要がありますか?なぜですか?

SELECT
t1.*,
t2.x
FROM
t1,
t2
WHERE
t2.`id` = t1.`id`

また

SELECT
t1.*,
t2.x
FROM
t1
INNER JOIN                                                  # LEFT JOIN ?
t2
ON t2.`id` = t1.`id`

コンマを使用すると、LEFT JOINS を使用した場合と同じ効果がありますか?

それは恥ずかしいです。何年も前から自分に問いかけたのはこれが初めてです。最初のバージョンを使用したことがありますが、最初の SQL インダクションでいくつかの行を見逃したように感じています。;)

4

4 に答える 4

0

クエリは同じで、1 つ目は 2 つ目の簡略構文です。LEFT JOINはまったく違うものです。

INNER JOIN両方のテーブルに共通するレコードのみを表示します。LEFT JOIN左のテーブルからすべてのレコードを取得し、右のテーブルのレコードと照合します。右側のテーブルに一致するレコードがない場合はNULL、代わりに選択されます。

于 2012-04-18T18:47:16.803 に答える
0

「コンマ」構文は、INNER JOIN 構文と同等です。クエリ オプティマイザは、どのように要求したかに関係なく、同じクエリを実行する必要があります。意図をより明確にするため、JOIN 言語を使用して結合を行い、WHERE 言語を使用してフィルタリングを行うことを一般的に推奨します。

于 2012-04-18T18:48:30.140 に答える
0

内部結合は、2 番目のテーブルの空 (null) の結果をスキップする左結合です。

クエリ オプティマイザーは、すべてが where 句を使用して行われる場合、より多くの可能性を秘めています。一部の rdbm は、自然結合やその他の結合などのコマンドをサポートしていないため、「where」を使用することは本当に信頼できるものです。

于 2012-04-18T18:53:42.357 に答える
0

最初のクエリはデカルト クエリと呼ばれ、通常、大規模なデータベースでは望ましくない結果をもたらします。

代わりに、結合を使用すると、必要なものが正確に生成されます。

于 2012-04-19T05:38:13.310 に答える