这是我的表:
+----+------+------+
| ID | Col1 | Col2 |
+----+------+------+
| 11 | 156 | 48 |
| 12 | 5 | 22 |
| 13 | 156 | 32 |
+----+------+------+
我想做的是
SELECT ID FROM Table1 WHERE Col1 = (SELECT MAX(col1) FROM Table1)
但由于它将被声明,并且这是在存储过程中写入的,因此会给出错误"子查询返回的值超过1"。
如果发生此错误,我想使用11 AND 12和select Min(col2)
只是那些id然后只给一个ID。
是否有可能抓住这两个ID?如果是,我该怎么做?
答案 0 :(得分:3)
替代答案基本上适用于每个数据库。 (在某些情况下只使用LIMIT而不是TOP)
SELECT TOP 1 ID FROM Table1 ORDER BY Col1 DESC, Col2 ASC
答案 1 :(得分:0)
上次编辑:我注意到你的sql-server标签。然而,这将适用于postgre :(
这将为您提供您正在寻找的确切答案。
SELECT DISTINCT ON (Col1) ID
FROM Table1
WHERE Col1 = (SELECT MAX(col1) FROM Table1)
ORDER BY Col2 ASC