gpt4 book ai didi

具有多个 ID 的 SQL Select

转载 作者:行者123 更新时间:2023-12-02 06:38:32 24 4
gpt4 key购买 nike

我有一个包含三个字段的地址历史记录表:EmpIDAddressAddrID

每次添加新地址时,我还会将该特定员工的地址 ID (AddrID) 加 1。

EmpID | AddrID | Address
-------------------------------
1 | 1 | 1234 First Ave
1 | 2 | 2145 First Ave
1 | 3 | 1111 First Ave

2 | 1 | 1001 Second St
2 | 2 | 1002 Second St
2 | 3 | 1003 Second St
2 | 4 | 2222 Second St

3 | 1 | 3332 Third Lane
3 | 2 | 3333 Third Lane

4 | 1 | 4444 Fourth Way

如何获取每位员工的最新地址(最高地址 ID)?理想情况下,我应该能够返回:

EmpID | AddrID | Address
-------------------------------
1 | 3 | 1111 First Ave
2 | 4 | 2222 Second St
3 | 2 | 3333 Third Lane
4 | 1 | 4444 Fourth Way

到目前为止,我返回的结果要么太多(即每个员工、每个 AddrID 1 以及与这两者关联的每个地址),要么返回的结果太少(即每个员工的 AddrID 4 - 只是员工 2)。

我尝试过使用DistinctGroup ByOrder ByHaving 和 Self-Joins 来没有用。

我错过了什么?

最佳答案

您可以使用子查询为每个 empid 获取 MAX() 地址:

select t1.empid,
t1.addrid,
t1.address
from table1 t1
inner join
(
select max(addrid) addrid, empid
from table1
group by empid
) t2
on t1.empid = t2.empid
and t1.addrid = t2.addrid

参见 SQL Fiddle With Demo

内部查询将返回最大 addridempid 然后您将表连接到这两个值的结果,这将限制返回的记录。

关于具有多个 ID 的 SQL Select,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12735951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com