2014-06-21 38 views
2

這裏是我的表:如何處理子查詢返回多個值

+----+------+------+ 
| ID | Col1 | Col2 | 
+----+------+------+ 
| 11 | 156 | 48 | 
| 12 | 5 | 22 | 
| 13 | 156 | 32 | 
+----+------+------+ 

我想要做的就是

SELECT ID FROM Table1 WHERE Col1 = (SELECT MAX(col1) FROM Table1) 

,但因爲它會被宣佈,這裏面寫的一個存儲過程會出現「Subquery返回多個值」的錯誤。
如果發生此錯誤,我想使用11 AND 12和select Min(col2)只是這些ID然後只給一個ID。

是否有可能趕上這兩個ID?如果是,我該怎麼做?

回答

3

備選答案,將工作基本上每個DB。(只是一些使用LIMIT代替TOP的例)

SELECT TOP 1 ID FROM Table1 ORDER BY Col1 DESC, Col2 ASC 
+0

感謝您的回答,這是偉大的工作:) – Muhab

+0

歡迎您:) –

0

上次編輯:我注意到你的sql-server標記。然而,這將在postgre :(

工作這會給你你正在尋找確切的答案。

SELECT DISTINCT ON (Col1) ID 
    FROM Table1 
    WHERE Col1 = (SELECT MAX(col1) FROM Table1) 
    ORDER BY Col2 ASC 
+0

它會與此幫助SQL服務器上進行測試後,在SQLServer的工作也沒關係 – Serpiton

+0

[現場](http://www.w3schools.com/sql/sql_distinct.asp)這給退二3列的行,我只是想聲明ID。無論如何感謝您的幫助^^ – Muhab