-- 用于模仿原始表顺序添加一个新的顺序列 with employees_with_order as ( select *, row_number() over () as original_order from employees ), rank_emp as ( select emp_no, row_number() over (order by first_name) as row_first from employees_with_order ) select e.first_name from employees_with_order e left join rank_emp re on e.emp_no = re.emp_no where mod(re.row_first, 2) = 1 order by e.original_order;
用公用表达式写了好几遍,但是最开始没有加e.original_order,一直报错。
本来以为join 之后会按照employees原本的顺序输出,没想到不是啊。