0

面接で受けた質問です。次の 3 つのシナリオの違いを説明するように依頼されました。

クエリ #1:

SELECT p.name, c.email
FROM PersonalDetails as p
JOIN ContactDetails c
ON p.id = c.id
WHERE p.region = 'UK'

クエリ #2

SELECT p.name, c.email
FROM PersonalDetails as p
LEFT JOIN ContactDetails c
ON p.id = c.id
WHERE p.region = 'UK'

クエリ #3:

SELECT p.name, c.email
FROM PersonalDetails as p
LEFT JOIN ContactDetails c
ON p.id = c.id AND p.region = 'USA'

私の答え-1番目は内部結合で、2番目はLEFT JOINです。したがって、最初のクエリは両方のテーブルから一致するレコードのみを返し、2番目のクエリは両方のテーブルから一致するレコードと左のテーブルからすべてのレコードを返します。

彼らの答え - 最初の 2 つのクエリは同じ結果を返します。3番目のクエリは内部結合として実行されます

誰がこれがどのように起こるか説明できますか...???

前もって感謝します

4

2 に答える 2

3

これを分解してみましょう:

  • クエリ 1 は内部結合です。JOINそれ自体は と同じINNER JOINです。インタビュアーに 1 を打ってください。

  • クエリ 2 と 3 は両方とも外部結合です。#2 に節があり、#3 にWHERE追加のJOIN節がありますが、これは親テーブルに反するものであり、子テーブルからは何も除外されません。インタビュアーのストライク 2 と 3。

彼らは、あなたが自分の答えを擁護するかどうかをテストしようとしているか、SQL を理解していないか、またはあなたが間違っていることを覚えているかのいずれかです。

于 2013-02-22T16:22:48.420 に答える
0

インタビュアーがなぜそんなに間違っていたのかを尋ねていて、あなたが正しかったかどうかを尋ねていない場合、これは SE 内の The Workplace の方が適している可能性があります。

私も似たような状況で、面接を行った採用担当者は技術者ではなく、RE:RDBMS などの質問の種類について技術者に相談していました。その結果、マネージャーの技術的概念の把握は、優れたものとは言えませんでした。

また、面接官が間違った答えを提供したり、同じ質問を何度も繰り返したりして、応募者が状況にどのように対処するかを確認するために、故意に応募者をおびき寄せたという話を複数聞いたことがあります。

于 2013-02-22T17:10:31.953 に答える