私はちょうどこれを理解しました。おそらく悪い習慣ですが、この場合はうまくいきました。
私は、すべての列名にテーブル プレフィックスを付けてエイリアスを作成したり、書き出したりしたくない怠け者の 1 人です。
table_name.*select ステートメントでを使用して、特定のテーブルからすべての列を選択できます。
列名が重複している場合、mysql は最初から最後まで上書きします。最初に複製された列名のデータは、その列名が再び検出されると上書きされます。したがって、最後に来る重複した列名が勝ちます。
それぞれが重複した列名を含む 3 つのテーブルを結合している場合、select ステートメント内のテーブルの順序によって、重複した列に対して取得するデータが決まります。
例:
SELECT table1.* , table2.* , table3.* FROM table1 LEFT JOIN table2 ON table1.dup = table2.dup LEFT JOIN table3 ON table2.dup = table3.dup;
dup上記の例では、 I getの値はfrom になりますtable3。
dupからの値になりたい場合はどうすればよいtable1ですか?
次に、これを行う必要があります。
SELECT table3.* , table2.* , table1.* FROM table1 LEFT JOIN table2 ON table1.dup = table2.dup LEFT JOIN table3 ON table2.dup = table3.dup;
table1が最後に来るので、 の値はduptable1 の値になります。
dupおかしな列をすべて書き出す必要なく、必要な値を取得しましたが、それでもすべての列を操作できます。わーい!
dupの値が3 つのテーブルすべてで同じであることはわかっていますtable3が、 に一致する値がない場合はどうなりdupますか? 次にdup、最初の例では空白になり、それは残念なことです。