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

SQL-複数の列に基づいて、あるテーブルから別のテーブルにレコードを照合します

    DBの設計は貧弱ですが、それと一緒に暮らす必要があると仮定すると:

    SELECT h.name
        FROM tblhobby h
            INNER JOIN tblavailable_hobby ah1
                ON h.hobby1 = ah1.available_hobby
            INNER JOIN tblavailable_hobby ah2
                ON h.hobby2 = ah2.available_hobby
            INNER JOIN tblavailable_hobby ah3
                ON h.hobby3 = ah3.available_hobby
    

    編集 :以下のコメントで提案されたひねりに答える。

    SELECT h.name
        FROM tblhobby h
            LEFT JOIN tblavailable_hobby ah1
                ON h.hobby1 = ah1.available_hobby
            LEFT JOIN tblavailable_hobby ah2
                ON h.hobby2 = ah2.available_hobby
            LEFT JOIN tblavailable_hobby ah3
                ON h.hobby3 = ah3.available_hobby
        WHERE (h.hobby1 IS NULL OR ah1.available_hobby IS NOT NULL)
            AND (h.hobby2 IS NULL OR ah2.available_hobby IS NOT NULL)
            AND (h.hobby3 IS NULL OR ah3.available_hobby IS NOT NULL)
    


    1. エンティティフレームワークは、where句に追加の条件を追加します

    2. Group_concat関数を使用してテーブルからデータを取得する

    3. innodb分離レベルとロック

    4. MySQLのNOW()、SYSDATE()、およびCURRENT_DATE()の違い