相关表:
DepartmentPhone:DepartmentPhoneID int、DepartmentID int、PhoneID int
Phone:PhoneID int、PhoneType int
有 6 个 PhoneType=4 的电话属于 DepartmentID=2。所以这会产生 6 条记录:
select *
from DepartmentPhone
join Phone on Phone.PhoneID = DepartmentPhone.PhoneID and Phone.PhoneType = 4
where DepartmentPhone.DepartmentID = 2
请注意,DepartmentID=2 用于说明目的,我的查询将包含所有部门。
我想要实现的是为每个部门选择第一个电话(类型 = 4) - 每个部门只有 1 行。我认为以下查询可以解决问题,但它会不断检索所有 6 条记录。我错过了什么?
select x.*
from DepartmentPhone x
where
x.DepartmentID = 2
and x.PhoneID = (select max(y.PhoneID)
from departmentphone y
join Phone on y.PhoneID = Phone.PhoneID and Phone.PhoneType = 4
where x.DepartmentPhoneID = y.DepartmentPhoneID)
谢谢你的帮助!!!