先週、技術面接を受けましたが、面接担当者は、次のクエリを実行するとどうなるかを尋ねました。
SELECT * FROM tbl1, tbl2
正しく答えたと思いますが、深い答えではありませんでした。
両方のテーブルのすべての列を選択すると言いました。たとえば、tbl1 に 3 つの列があり、tbl2 に 4 つの列があるとします。結果セットには 7 列が含まれます。
それから彼はなぜ7なのかと私に尋ねました。各テーブルからすべてを選択していたので、私は言いました。
それは悪い答えでしたが、他に何も思いつきませんでした。
要するに、インタビューを受けた後、2 つのテーブルを使用して後者のステートメントを実行しました。
表 A には、犬、猫、象の 3 種類の動物がありました。
テーブル B には、Mat と Beth の 2 つの名前がありました。
これは、ステートメントが実行された後に取得した結果セットです。
*********************************************
| id_tbl1 | name_tbl1 | id_tbl2 | name_tbl2 |
*********************************************
| 1 | dog | 1 | Mat |
| 2 | cat | 1 | Mat |
| 3 | elephant | 1 | Mat |
| 1 | dog | 2 | Beth |
| 2 | cat | 2 | Beth |
| 3 | elephant | 2 | Beth |
*********************************************
だから私の質問は、なぜステートメントはそのように振る舞うのですか?
言い換えると:
テーブル A の最後に到達するまでテーブル B のレコードが繰り返され、その後最初からやり直されるのはなぜですか?
インタビュアーを「驚かせる」ような方法で、質問にどのように答えますか?
この質問が SO に属していない場合は、遠慮なく削除するか、閉じてください。