可能重复:
MySQL SELECT results from 1 table, but exclude results depending on another table?
我希望我不会问一些已经回答过的问题......没有看到一个。看似简单,但我无法让它发挥作用。
我有两张桌子:单位和租约。
我想要一个单位表中所有未结单位(建筑物和单位单位数)的列表,不包括租约表中在enddate字段中为空的那些单位。
表的结构(我删除了此示例不需要的其他字段:
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));
答案 0 :(得分: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中更好地优化。