这个问题在这里已经有答案了:
sql仅选择列上具有最大值的行[重复](27个答案)
两年前关门了。
我是新的存储过程,我寻找答案,但没有找到一个适合我。
我有一张如下的table:
|---------------------|------------------|----------------------|
| InterfaceID | Prefix | FinancialID |
|---------------------|------------------|----------------------|
| 1501 | ADM/B/11/ | 8 |
|---------------------|------------------|----------------------|
| 1501 | ASD/K/10/ | 7 |
|---------------------|------------------|----------------------|
| 1502 | BDM/H/22/ | 7 |
|---------------------|------------------|----------------------|
| 1503 | CDM/Q/14/ | 6 |
|---------------------|------------------|----------------------|
| 1506 | FDM/R/17/ | 8 |
|---------------------|------------------|----------------------|
| 1506 | FDU/R/16/ | 7 |
|---------------------|------------------|----------------------|
| 1506 | FDT/R/14/ | 6 |
|---------------------|------------------|----------------------|
| 1506 | FDD/R/12/ | 5 |
|---------------------|------------------|----------------------|
| 1506 | LMD/R/10/ | 4 |
|---------------------|------------------|----------------------|
我需要这样的输出
|---------------------|------------------|----------------------|
| InterfaceID | Prefix | FinancialID |
|---------------------|------------------|----------------------|
| 1501 | ADM/B/11/ | 8 |
|---------------------|------------------|----------------------|
| 1502 | BDM/H/22/ | 7 |
|---------------------|------------------|----------------------|
| 1503 | CDM/Q/14/ | 6 |
|---------------------|------------------|----------------------|
| 1506 | FDM/R/17/ | 8 |
|---------------------|------------------|----------------------|
也就是说,如果要为每个 InterfaceID
最高 FinancialID
.
我尝试了这个选择查询:
select InterfaceID,Prefix,FinancialID
from aInterfaceTable
WHERE Financialid=(select max(Financialid))
但这给了我一个错误
聚合不能出现在where子句中,除非它出现在having子句或select列表中包含的子查询中,并且被聚合的列是外部引用。
如何轻松做到这一点?
4条答案
按热度按时间yrwegjxp1#
这是您需要的查询。
这是你可以玩的工作小提琴。https://www.db-fiddle.com/f/bcbheqni2ffjjeksxrw82q/0
jvlzgdj92#
zvokhttg3#
我成功了
r3i60tvu4#