如何在PostgreSQL中查询数据表的偶数行与奇数行?
PostgreSQL 查询筛选员工表的奇数行与偶数行记录
原始员工数据表
EmpID EmpFname EmpLname Department Salary 1 Karan mehta HR 300000 2 Rohit Sharma Admin 75000 3 Ankush Rajput Account 60000 4 Priyadarshini Sharma HR 500000 5 Sanket Gupta Developer 100000 6 Shruthi Varyar Admin 80000 7 Rohit Sharma Admin 75000
方法一:基于EmpID的奇偶性筛选
如果表中的EmpID是连续自增且与行插入顺序一致的,直接通过EmpID取余判断即可:
筛选奇数行记录
SELECT * FROM employees WHERE EmpID % 2 = 1;
筛选偶数行记录
SELECT * FROM employees WHERE EmpID % 2 = 0;
方法二:基于行号筛选(不依赖EmpID)
如果EmpID存在缺失、不连续,或者你需要严格按照表的物理行顺序筛选,可以使用ROW_NUMBER()窗口函数生成行号后再过滤。
注意:务必在
OVER()子句中添加ORDER BY指定排序规则(示例中用ORDER BY EmpID),否则数据库返回的行顺序是不确定的,多次查询结果可能不一致。
筛选奇数行记录
SELECT EmpID, EmpFname, EmpLname, Department, Salary FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY EmpID) AS row_num FROM employees ) AS numbered_rows WHERE row_num % 2 = 1;
筛选偶数行记录
SELECT EmpID, EmpFname, EmpLname, Department, Salary FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY EmpID) AS row_num FROM employees ) AS numbered_rows WHERE row_num % 2 = 0;
内容的提问来源于stack exchange,提问作者Sarath S
相关产品推荐
相关产品推荐

