复杂查询A表一对多B表,查询a表对应的b表日期最大值

本文介绍如何在一对多的关系中,通过SQL查询从A表关联B表,找出A表每个记录对应的B表最大日期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SELECT
    *
FROM
    (
        SELECT
            l.Address,
            u.id,
            l.Lat,
            l.Log,
            u.Account,
            ui.Name,
            u.State,
            row_number () OVER (ORDER BY [Time] DESC) AS row_number
        FROM
            Users u,
            UserInfo ui,
            Location l
        WHERE
            u.id = l.Userid
        AND u.id = ui.UsersId
        AND u.State IN (0, 1)
        AND l.[time] = (
            SELECT
                MAX ([Time])
            FROM
                Location
            WHERE
                UserId = l.Userid
        )
        AND l.Comid = 24
    ) t
WHERE
    t.row_number > 0
AND t.row_number <= 12
这样查出来的数据,当a表的用户没有time字段,那么数据就不显示,如果我们需要所有数据,代码如下:
SELECT
    *
FROM
    (
        SELECT
            l.Address,
            u.id,
            l.Lat,
            l.Log,
            u.Account,
            ui.Name,
            u.State,
            row_number () OVER (ORDER BY [Time] DESC) AS row_number
        FROM
            Users u,
            UserInfo ui,
            Location l
        WHERE
            u.id = l.Userid
        AND u.id = ui.UsersId
        AND u.State IN (0, 1)
        AND l.[time] = (
            SELECT
                MAX ([Time])
            FROM
                Location
            WHERE
                UserId = l.Userid
        )
        AND l.Comid = 24
    ) t
WHERE
    t.row_number > 0
AND t.row_number <= 12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值