You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写MySQL查询从单列筛选奇偶数值并分两列返回结果

MySQL查询:将单列奇偶数值配对为两列返回

问题描述

从仅包含Numb列的表中筛选偶数与奇数,按顺序配对后以even(偶数)和odd(奇数)两列的格式返回,要求第n个偶数对应第n个奇数(如2对应1、4对应3等)。

解决方案

假设目标表名为numbers,可通过以下查询实现:

WITH even_nums AS (
    SELECT Numb AS even, 
           ROW_NUMBER() OVER (ORDER BY Numb) AS rn
    FROM numbers
    WHERE Numb % 2 = 0
),
odd_nums AS (
    SELECT Numb AS odd, 
           ROW_NUMBER() OVER (ORDER BY Numb) AS rn
    FROM numbers
    WHERE Numb % 2 = 1
)
SELECT even_nums.even, odd_nums.odd
FROM even_nums
JOIN odd_nums ON even_nums.rn = odd_nums.rn
ORDER BY even_nums.even;

逻辑说明

  1. 拆分奇偶数据集:用两个CTE分别筛选出偶数和奇数,同时通过ROW_NUMBER()函数为每个数据集按Numb升序生成行号rn,保证奇偶数值的顺序对应。
  2. 关联配对:通过行号rn将两个数据集关联,实现偶数和奇数的一一配对,最后按偶数值升序排序得到结果。

示例验证

针对题目给出的输入表,执行上述查询后将得到如下结果:

+------+-----+
| even | odd |
+------+-----+
|    2 |   1 |
|    4 |   3 |
|    6 |   5 |
|    8 |   7 |
|   10 |   9 |
|   12 |  11 |
+------+-----+

内容的提问来源于stack exchange,提问作者Rony_Beginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 03:40:29