0

mysql の自然結合について少し混乱しています。

2 つのテーブル
table1があり、列があります: 列id, name, address, number (id is the PK of table1)
table2があります:id, name, number, money (id is the PK of table2)

を参照して、すでに外部キーを作成"id"していますtable1"id"table2

"number"in table1isとin isこれらの 2 つの列の意味は異なりますが、名前は同じであると"people's number"します。"number"table2"telephone number"


と の自然な結合を行うtable1table2:

mysql は、名前が同じである and のすべての列を単純にチェックしますか。つまり、タプルtable1(行table2) が選択されることを意味し"id"ます。行は選択されません)?"name""number"id""name""number"

また

mysql は作成された外部キーのみをチェックしますか。つまり、同じ場合にのみ行が選択され"id"ますか?


別の質問は次のとおりです。

table1andを自然結合した後、 and という名前のtable2列が 1 つだけになるか、and"id"という名前の列が 2 つだけになりますか??"table1.id""table2.id"

本当にありがとう!

4

2 に答える 2

0

そのために自然結合を使用するべきではありません。おそらく、左結合を使用する必要があります。table1 は親テーブルですか? 少なくともそうあるべきだと思われますが、外部キー参照は、子テーブルに挿入された親テーブルからのものでなければなりません。親テーブルには参照 ID ごとに 1 つのエントリがあり、子テーブルには参照 ID のエントリが多数、1 つ、またはまったくない場合があります。

SELECT table1.id, table1.number AS person_number, table2.number AS phone_number
FROM table1 
LEFT JOIN table2 ON table1.id = table2.id
于 2014-04-08T13:45:04.210 に答える