2011-12-12 77 views
0

是以下中的SQL可以接受的:是否可以在集合函數中使用查詢?

SELECT P.pid P.cnt 
FROM Professors P 
WHERE P.cnt <= Max(SELECT P2.cnt FROM Professors P2) 

我問,因爲這是由教授提供的一個答案的一個問題,在中期。我實際上已經在SQL中嘗試過了,但是我只是想確認一下。

回答

3

在語法上,我會寫這樣的:從邏輯上講

SELECT P.pid, P.cnt 
    FROM Professors P 
    WHERE P.cnt <= (SELECT MAX(P2.cnt) FROM Professors P2) 

,它不因爲條件永遠是真的,所以看起來並沒有多大的成就。

+0

我沒有寫完整的查詢,我只是在虛擬查詢中使用了有問題的部分:) – sbenderli

1

是的,在聚合函數中允許查詢。當你嘗試它時,你得到的錯誤是什麼?對我來說這件事是P.pidSELECT P.pid P.cnt之後缺失的逗號。

我可能會錯過一些明顯的東西,但對我來說,這看起來像是一些額外的SQL,它什麼都不做。我將其解讀爲「爲所有教授以外的教授提供的信息,這些教授的人數少於或等於最重要的教授」 - I.E.,所有教授。爲什麼不完全消除WHERE

+0

你說得很對,這只是我發佈的一個虛擬查詢來獲得關於有問題位的答案。 – sbenderli

2

這不行。我不認爲這是標準的ANSI SQL

你可以嘗試把它改寫這樣

SELECT P.pid P.cnt 
FROM Professors P 
WHERE P.cnt <= (SELECT max(P2.cnt) FROM Professors P2) 
+0

非常感謝! – sbenderli

相關問題