相关表格:
DepartmentPhone:DepartmentPhoneID INT,DepartmentID的INT,PhoneID INT
电话:PhoneID INT,PHONETYPE INT
有6个手机PHONETYPE = 4中属于DepartmentID = 2。所以这将产生6条:
SQL - 帮助的 “顶部1按组”
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)
感谢您的帮助!
谢谢你的回答。虽然这是正确的比尔告诉我我的错误在哪里(关联DepartmentIDID而不是DepartmentID)。我感谢您的帮助。 – 2010-01-13 16:28:11