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

mysql:テーブルBに存在しない場合は、テーブルAからすべてのアイテムを選択します

    これがあなたがやりたいことのプロトタイプです:

    SELECT * FROM table1 t1
      WHERE NOT EXISTS (SELECT 1 FROM table2 t2 WHERE t1.id = t2.id)
    

    ここでは、id 両方のテーブルでPKとFKであると想定されています。それに応じて調整する必要があります。この場合、PKとFKを比較することが重要であることに注意してください。

    したがって、クエリは次のようになります。

    SELECT id, room_name FROM rooms r
    WHERE NOT EXISTS 
    (SELECT * FROM room_events re
        WHERE
              r.room_id = re.room_id
              AND
              (
              room_start BETWEEN '1294727400' AND '1294729200' 
              OR 
              room_finish BETWEEN '1294727400' AND '1294729200')
              )
    

    必要に応じて、mysqlクライアントで実行してクエリの一部を確認します。たとえば、以下がレコードを返すかどうかを確認できます。

    SELECT * FROM room_events 
        WHERE room_start BETWEEN '1294727400' AND '1294729200' 
              OR 
              room_finish BETWEEN '1294727400' AND '1294729200'
    

    そうでない場合は、原因を見つけて、他の部分に応じて行動します:)



    1. Mysqlクラスター化インデックスをどのように作成しますか?

    2. MySQLdbモジュールのセットアップの問題

    3. SELECT ... ORDER BY xxx LIMIT 1 FOR UPDATEによってロックされる行数はいくつですか?

    4. java.lang.IllegalStateException:閉じたEntityManagerFactoryで操作を実行しようとしています