0

3つのテーブルでSELECTクエリを実行する必要がありますが、場合によっては1つの列が欠落している可能性があるため、サブクエリを使用する方がLEFTJOINよりも優れているかどうかわかりません。これらはテーブルです:

オプション(名前、情報...)

所有者(名前、住所)

Rel(idoption、idowner)

SELECTは、各レコード内の所有者の名前を持つすべてのオプションを返す必要がありますが、場合によっては、オプションがどの所有者にも接続されておらず、所有者の名前が空である必要があります。助言がありますか?前もって感謝します

4

3 に答える 3

1

LEFT JOINの場合、一致する所有者がいるかどうかに関係なく、すべてのオプションが取得されます-「左側のテーブルに対するこの追加の考慮事項は、特別な種類の保存と考えることができます。左側のテーブルの各アイテムは、MySQLに表示されますその結果、結合されている他のテーブルと一致していなくても。」

から:http ://www.tizag.com/mysqlTutorial/mysqlleftjoin.php

于 2013-01-23T22:42:18.210 に答える
1

ALEFT JOINはおそらく適切な応答であり結果によってはサブクエリよりも高速になる可能性があります(同じプランにコンパイルされる可能性があります)。

SELECT
    op.name
    ,op.info
    ,...
    ,ow.name
    ,ow.address
FROM
    options op
LEFT OUTER JOIN
    Rel r
        ON r.idoption = op.id
LEFT OUTER JOIN
    owners ow
        ON ow.id = r.idowner
于 2013-01-23T22:44:28.360 に答える
0

左結合は、サブクエリよりもはるかに効率的で高速です。一致するものがない場合にNULLを使用できる場合は、それがより良いアプローチです。

于 2013-01-23T22:42:58.177 に答える