-5

重複の可能性:
MySQL SELECT は 1 つのテーブルから結果を取得しますが、別のテーブルに応じて結果を除外しますか?

すでに答えられていることを尋ねていないことを願っています..見たことがない. 簡単に思えますが、私はそれを機能させることができません。

Unit と Lease の 2 つのテーブルがあります。

enddate フィールドに null があるリース テーブルのユニットを除く、ユニット テーブルのすべてのオープン ユニット (建物とユニット ユニット番号) のリストが必要です。

テーブルの構造 (この例では必要のない他のフィールドを削除しました:

CREATE  TABLE Unit(
    UnitKey     Int NOT NULL AUTO_INCREMENT,
    UnitNumber  Char(5) NOT NULL,
    BuildingKey Int     NOT NULL,
    CONSTRAINT   UNIT_PK    PRIMARY KEY(UnitKey),
    CONSTRAINT   UNIT_BLDG_FK     FOREIGN KEY(BuildingKey)
                    REFERENCES Building(BuildingKey));

CREATE  TABLE Lease(
    LeaseKey  Int                   NOT NULL AUTO_INCREMENT,
    UnitKey   Int                  NOT NULL,
    EndDate     Date                   NULL,
    CONSTRAINT LEASE_PK               PRIMARY KEY(LeaseKey),
    CONSTRAINT      LEASE_UNIT_FK   FOREIGN KEY(UnitKey) REFERENCES Unit(UnitKey));
4

1 に答える 1

1

これを試して:

select u.*
from units u
where not exists (select 1 from lease l where l.unitkey = u.unitkey and l.enddate is null)

他のデータベース エンジンでは、「not in」を使用します。ただし、これは mysql でより適切に最適化されます。

于 2012-08-15T17:37:57.550 に答える