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

SQLIN句-一致しなかったIN要素を取得します

    あなたのRoomsのようです テーブルには、アクティブな占有のデータのみが含まれます。これは多くの点で理にかなっています。なぜなら、実際には部屋を占有していない人に関する情報を保存したくないからです。ただし、不足している部屋はRoomsに存在しないため、目的の結果セットを生成するのは困難です。 。

    ここでの1つのオプションは、「カレンダーテーブル」アプローチです。 LEFT JOINができます 現在のRoomsのすべての部屋を含むテーブル テーブルを作成し、行方不明の居住者にnobodyのラベルを付けます 。

    SELECT t1.Room,
           COALESCE(t2.OccupantName, 'Nobody') AS OccupantName
    FROM
    (
        SELECT "Room 1" AS Room
        UNION ALL
        SELECT "Room 2"
        UNION ALL
        SELECT "Room 3"
        UNION ALL
        SELECT "Room 4"
    ) AS t1
    LEFT JOIN Rooms AS t2
        ON t1.Room = t2.Rooms
    

    行サブクエリを使用して、すべての部屋のテーブルを作成したことに注意してください。実際には、この情報を含む実際のテーブルをWorkbenchで作成できます。

    デモはこちら:

    SQLFiddle



    1. 同じタイトルの複数の行または結果を組み合わせて、PHPおよびMySQLでドロップダウンメニューを形成します

    2. SQL自己結合クエリ?カテゴリサブカテゴリを取得する方法は?

    3. 巨大なMySQLInnoDbDELETEクエリを強制終了するとどうなりますか?

    4. 1つのテーブルに2つの主キーを作成することは可能ですか?