-2

誰かが次の違いを説明できますか:

SELECT name
FROM a.table
LEFT OUTER JOIN b.table
ON a.key = b.key;

SELECT name
FROM a.table;

いずれにせよ、どちらもテーブル a.table のすべての名前を返すため、違いはありません。

4

2 に答える 2

2

nameのキーに複数の一致がある場合、結合を含むクエリは の重複したコピーを返しますb

2 つのクエリは同じではありません。

于 2013-11-07T23:17:44.813 に答える
0

テーブル A とテーブル B の関係が 1 対 1 の場合、つまり、テーブル B の「キー」も主キーであり、したがってテーブル「A」のように一意である場合、この 2 つは等しくなります。

表 A:

  Key      Name
  ----     --------------
   1       George
   2       Lisa
   3       Bill

表 B:

  Key
  ----
   1
   3

最初のクエリを使用した結果は次のようになり、2 番目のクエリと同じになります。

  Name
  -------
  George
  Lisa
  Bill

ただし、関係が 1 対多の場合、つまり、テーブル A の 1 つのレコードがテーブル B に 1 つ以上の関連レコードを持つ可能性があります。つまり、テーブル B の「キー」は外部キーであり、2 つが等しくないことを意味します。 .

表 B:

  Key
  ----
   1
   2
   3
   1
   3

最初のクエリを使用した結果は次のようになります。

  Name
  -------
  George
  George
  Lisa
  Bill
  Bill

私のSQL Fiddle Demoを参照してください

于 2013-11-08T00:05:35.653 に答える