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

左結合/ISNULLは、一方のテーブルにあり、もう一方のテーブルにはないレコードをどのように削除しますか?

    これは次のように説明できます

    mysql> select * from table1 ;
    +------+------+
    | id   | val  |
    +------+------+
    |    1 |   10 |
    |    2 |   30 |
    |    3 |   40 |
    +------+------+
    3 rows in set (0.00 sec)
    
    mysql> select * from table2 ;
    +------+------+
    | id   | t1id |
    +------+------+
    |    1 |    1 |
    |    2 |    2 |
    +------+------+
    2 rows in set (0.00 sec)
    

    ここでtable1.id <-> table2.t1id

    ここで、left joinを実行すると 結合キーを使用し、左側のテーブルがtable1の場合、table1からすべてのデータを取得し、table2の一致しないレコードではnullに設定されます

    mysql> select t1.* , t2.t1id from table1 t1 
    left join table2 t2 on t2.t1id = t1.id ;
    +------+------+------+
    | id   | val  | t1id |
    +------+------+------+
    |    1 |   10 |    1 |
    |    2 |   30 |    2 |
    |    3 |   40 | NULL |
    +------+------+------+
    
    3 rows in set (0.00 sec)
    

    table1.id =3のtable2には値がないため、nullとして設定されていることを確認してください。where条件を適用すると、さらにフィルタリングが実行されます

    mysql> select t1.* , t2.t1id from table1 t1 
    left join table2 t2 on t2.t1id = t1.id where t2.t1id is null;
    +------+------+------+
    | id   | val  | t1id |
    +------+------+------+
    |    3 |   40 | NULL |
    +------+------+------+
    1 row in set (0.00 sec)
    


    1. 1回の選択でカテゴリごとに最新の2つのアイテムを取得する方法(mysqlを使用)

    2. リーダーボードを作成するには、ランク/位置を表示するにはどうすればよいですか?

    3. JavaのJPAテクノロジーとは何ですか?

    4. PHPソースコードを接続してMySQLデータベースにフォームを送信する