2012-06-08 54 views
1

這是問題所在。Sql Server,如何識別結果列,以便我可以在where子句中使用它

select count(studentID) AS count from educators where count > 1 group by studentid 

由於SQL Server尚不知道count列,所以不起作用。

所以,我必須這樣做

select * 
    from (select count(StudentID) as count 
      from educators 
     group by studentid 
     ) s 
where s.count > 1 

是否有一個更優雅的解決方案?似乎應該有更好的方法來做到這一點。

+0

感謝編輯喬納森,我真的需要在發佈之前查看這些內容。 –

回答

5

你可以使用HAVING條款,也許是這樣的:

SELECT StudentID, COUNT(StudentID) 
FROM educators 
GROUP BY StudentID 
HAVING COUNT(StudentID) > 1 

查詢將顯示出現不止一次的所有StudentIDs。

3
SELECT COUNT(studentID) AS count 
FROM educators 
GROUP by studentid 
HAVING COUNT(studentID) > 1 

HAVING就像一個集合函數的地方。所以它適用於AVG,SUM等。

1
SELECT 
    COUNT(StudentID) 
FROM 
    educators 
GROUP BY 
    studentid 
HAVING 
    COUNT(StudentID) > 1 

瞭解您的工具和剪貼板開發人員不應該是。

1

你得到的是關於它的好處。您可以嘗試使用除count之外的其他名稱作爲別名,但它可能沒有多大幫助。列別名名義上僅用於結果集,有時(有些DBMS允許)ORDER BY子句。

此外,在聚集條件後組HAVING子句中屬於BY子句:

SELECT COUNT(studentID) AS count 
    FROM educators 
GROUP BY studentid 
HAVING COUNT(StudentID) > 1 

顯然,在嵌套SELECT的情況下,可以將外部查詢的WHERE子句中應用的條件,但不在內部查詢的WHERE子句中。

0

SELECT COUNT(studentID)AS計數 教育工作者 GROUP BY studentid HAVING COUNT(StudentID)> 1

永遠記住,當你使用的是像MIN(),MAX()聚合函數,數( ),avg()你需要使用having子句。

相關問題