我有一个预订 list ,上面可以列出两辆相同的车,但我只想展示一辆,而不是最新的,我想要最早的.

我是怎么做到的?

        SELECT 

        booking.id,

        cars.name,
        cars.cover as image,

        car_details.mark,

        client.surname,
        client.lastname,
        
        booking_car_status.booking_id as booking_car_status_id
        
        FROM booking

        INNER JOIN cars
        ON booking.car_id = cars.id

        INNER JOIN car_details
        ON car_details.car_id = cars.id

        INNER JOIN client
        ON client.id = booking.client_id
        
        LEFT JOIN booking_car_status
        ON booking_car_status.booking_id = booking.id

        LEFT JOIN booking_signature
        ON booking_signature.booking_id = booking.id

        WHERE (booking_car_status.booking_id IS NULL) AND (booking.from_date::date <= NOW()) ORDER BY booking.id ASC

推荐答案

我假设cars.id表示汽车的唯一性,并且您希望每辆汽车的booking.id最早

WITH CTE AS
(
        SELECT 
        booking.id,
        cars.name,
        cars.cover as image,
        car_details.mark,
        client.surname,
        client.lastname,      
        booking_car_status.booking_id as booking_car_status_id ,      
        ROW_NUMBER()OVER(PARTITION BY cars.id ORDER BY booking.id)RN
        
        FROM booking

        INNER JOIN cars
        ON booking.car_id = cars.id

        INNER JOIN car_details
        ON car_details.car_id = cars.id

        INNER JOIN client
        ON client.id = booking.client_id
        
        LEFT JOIN booking_car_status
        ON booking_car_status.booking_id = booking.id

        LEFT JOIN booking_signature
        ON booking_signature.booking_id = booking.id

        WHERE (booking_car_status.booking_id IS NULL) AND (booking.from_date::date <= NOW()) 
)
        SELECT id,
        name,
        image,
        mark,
        surname,
        lastname,      
        booking_car_status_id 
        FROM CTE WHERE RN=1
        ORDER BY id ASC

Sql相关问答推荐

使用占位符向SQL INSERT查询添加 case

没有循环的SQL更新多个XML node 值

在Oracle中,如何删除具有特定值的行,仅当它是重复的行?

Access VBA SQL命令INSERT FOR MULTIME VALUE

snowflake/SQL嵌套的JSON对象和数组

找到最新的连线

在查询Oracle SQL中创建替代ID

用于从第二个表中提取具有最小最终价格值的记录的SQL查询

比较SQL中以逗号分隔的字符串

将SQL Server查询改进为;线程安全;

列(值不为空)到其他有序列

postgres按组消除分区中的NULLS

Select 给定类别列表(或更多类别)中的所有事物

条件意外地显着降低性能的地方

PlSql 陷入死循环

连续日期的SQL

如何在 SQL Server 中参数化 Select top 'n'

在 PostgreSQL 中,如何将数组中的每个元素用作另一个表中的键?

如何比较同一张表中的行并进行相应更新

Lag() 获取snowflake的值变化