仅选择具有最后日期的记录

时间:2021-01-15 15:09:01

标签: sql date

我执行了这个查询:

SELECT
    bookings.id
    , bookings.confirmed_at
    , bookings.disputed
    , bookings.disputed_at
    , bookings.no_show_blocked_until
    , bookings.user_id
    , bookings.refunded
    , bookings.refunded_at
    , invoices.id AS invoice_id
    , invoices.state
    , invoices.currency_to_eur
    , lessons.time
FROM
    bookings
    LEFT JOIN invoice_lines
        ON invoice_lines.booking_id = bookings.id
    LEFT JOIN invoices
        ON invoices.id = invoice_lines.invoice_id
    LEFT JOIN lesson_bookings
        ON lesson_bookings.booking_id = bookings.id
    LEFT JOIN lessons
        ON lessons.id = lesson_bookings.lesson_id

我的问题是我得到的分区显示了许多具有相同booking_id和invoice_id的记录,但与课程时间列的日期不同。对于具有相同预订 ID 和发票 ID 的记录,我只想获取最后日期的记录。请问我该怎么办?

示例:

booking_id invoice_id 日期

123 325 01/01/2020 123 325 01/02/2020 123 200 01/05/2020 123 300 01/05/2020 200 600 07/08/2020

我想得到的是:

123 325 01/02/2020 123 200 01/05/2020 123 300 01/05/2020 200 600 07/08/2020

1 个答案:

答案 0 :(得分:0)

WHERE lessons.time = 
    (SELECT MAX(l.time) 
    FROM lessons l 
    WHERE l.id = lessons.id)
相关问题