ホームページ >データベース >mysql チュートリアル >MySQL クエリが予想よりも少ない結果を返すのはなぜですか?

MySQL クエリが予想よりも少ない結果を返すのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-26 02:46:10171ブラウズ

Why is My MySQL Query Returning Fewer Results Than Expected?

MySQL JOIN と LEFT JOIN の区別

データベース クエリのコンテキストでは、さまざまな結合タイプ間のニュアンスを理解することが重要です。説明したようなエラーが発生した場合は、通常の JOIN と LEFT JOIN の違いを詳しく調べることが重要です。

デフォルトの結合タイプ

想定に反して、 MySQL のデフォルトの結合タイプは、LEFT JOIN ではなく INNER JOIN です。これは、結合タイプの指定を省略すると、デフォルトで INNER JOIN が使用されることを意味します。

違いを理解する

視覚的な図に示されているように、INNER JOIN は一致します。参加しているテーブルからの共通の値を含む行。対照的に、LEFT JOIN には、左側のテーブル (この場合は DM_Server.Jobs) のすべての行と、右側のテーブルの一致する行のみが含まれます。一致するものが存在しない場合、結果には欠落データの null 値が含まれます。

解決策

左側のテーブルからすべての行を返すという望ましい動作を得るには、次のようにします。 LEFT JOIN を明示的に使用できます:

SELECT
            `DM_Server`.`Jobs`.*,
            `DM_Server`.servers.Description AS server,
            digital_inventory.params,
            products.products_id,
            products.products_pdfupload,
            customers.customers_firstname,
            customers.customers_lastname
        FROM `DM_Server`.`Jobs`
        LEFT JOIN `DM_Server`.servers ON servers.ServerID = Jobs.Jobs_ServerID
        LEFT JOIN `cpod_live`.`digital_inventory` ON digital_inventory.jobname = Jobs.Jobs_Name
        LEFT JOIN `cpod_live`.`products` ON products.products_pdfupload = CONCAT(digital_inventory.jobname, ".pdf")
        LEFT JOIN `cpod_live`.`customers` ON customers.customers_id = products.cID
        ORDER BY `DM_Server`.`Jobs`.Jobs_StartTime DESC LIMIT 50

以上がMySQL クエリが予想よりも少ない結果を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。