使用窗口函数和条件限制来解决这个问题。首先,使用窗口函数按照记录状态排序,将记录分为两组:活动记录和非活动记录。然后,使用条件限制选择所有活动记录和第一个非活动记录。
以下是例子代码:
SELECT id, name, status FROM ( SELECT id, name, status, ROW_NUMBER() OVER (PARTITION BY status ORDER BY id) AS rn FROM my_table WHERE status IN ('active', 'inactive') ) AS t WHERE status = 'active' OR (status = 'inactive' AND rn = 1)