相關表格:
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