sql >> データベース >  >> RDS >> Mysql

クエリが多くの結果に戻るのはなぜですか?

    candidates間の結合条件がありません およびjobs 、したがって、両方のテーブルの間にデカルト積が得られます。また、skill_namesの結合条件に問題があります 、両方の列が同じです(これにより、デカルト積が再び生成されます)。

    SELECT can.* , co.*, j.*, sn.*
    FROM candidates AS can
    JOIN jobs AS j ON j.candidate_id = can.candidate_id --> here: missing join condition
    JOIN companies AS co ON j.company_id = co.company_id
    JOIN skills AS s ON s.job_id = j.job_id
    JOIN skill_names AS sn ON sn.skill_id = s.skill_id  --> and here: wrong join condition
    

    多くのRDBMSは、JOINで構文エラーを発生させます ONなし 句(デカルト積が必要な場合は、CROSS JOINを使用して明示的にする必要があります )、しかし、残念ながら、MySQLではありません。

    この質問に関しては:

    いいえ。inner joinを使用している限り s(left joinではありません s)、結合順序はクエリプランナーには関係ありません。クエリプランナーは、より効率的であると考える順序でそれらを再配置します。




    1. 実行時間に4秒を追加する結合のWHERE句

    2. SailsJSとmySQLのカスタムID名がブループリントで機能しない

    3. PostgreSQL:PostgreSQLデータベースのユーザーにすべての権限を付与します

    4. ORA-00900:無効なSQL文エラー?SQLの何が問題になっていますか?