题解 | 给出employees表中排名为奇数行的first_name

给出employees表中排名为奇数行的first_name

https://www.nowcoder.com/practice/e3cf1171f6cc426bac85fd4ffa786594

SELECT first_name
FROM (
  SELECT 
    emp_no,  -- 保留原表的顺序标识(主键),关键!
    first_name,
    ROW_NUMBER() OVER(ORDER BY first_name ASC) AS r_num  -- 按 first_name 升序标记行号
  FROM employees
) AS t
WHERE t.r_num % 2 = 1  -- 筛选升序后的奇数行
ORDER BY t.emp_no;  -- 按主键排序,还原原表顺序

原表的 “顺序” 本质依赖「唯一标识字段」(如主键  emp_no)—— 数据库的 “默认顺序”(无 ORDER BY 时)是不确定的,只有通过主键 / 自增字段才能稳定还原原始顺序。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务