mysql - 查询拆分偶数和奇数,使用 GROUP_CONCAT
问题描述
我有一个查询,可以在具有四个数字的特定邮政编码中查找每条街道的门牌号码:
SELECT *,
GROUP_CONCAT(DISTINCT CAST(housenumber AS int) ORDER BY housenumber ASC) AS housenumbers
FROM streets
WHERE postcode LIKE '3031%'
GROUP BY street
ORDER BY lat,lon
这是分组门牌号码的结果。
491,492,493,500,501,502,503,504,505,506,507,508,50
我想将结果分成两列,即偶数屋数和奇数屋数。我尝试了MOD
and %2
,但两者都需要 a ,并且我注意到在 groupcat 函数中WHERE
无法使用 the 。WHERE
如何将结果拆分为偶数和奇数?
解决方案
你可以使用CASE
表达式:
SELECT street
,GROUP_CONCAT(DISTINCT CASE WHEN MOD(CAST(housenumber AS int),2) = 0 THEN CAST(housenumber AS int) END ORDER BY housenumber ASC) AS housenumbers_even
,GROUP_CONCAT(DISTINCT CASE WHEN MOD(CAST(housenumber AS int),2) = 1 THEN CAST(housenumber AS int) END ORDER BY housenumber ASC) AS housenumbers_odd
FROM streets
WHERE postcode LIKE '3031%'
GROUP BY street
ORDER BY lat,lon;
它之所以有效,是因为GROUP_CONCAT
跳过了NULL
值。
也不SELECT * ... GROUP BY street
安全。相关:mySQL 和 postgreSQL 中的 Group by 子句,为什么 postgreSQL 中的错误?
推荐阅读
- dll - 检测到 PInvokeStackImbalance
- amazon-web-services - AWS sagemaker笔记本上的venv不工作
- reactjs - Reactjs 用户切片中的错误 - React Redux Toolkit
- python - 将 WordSearch 生成器变量保存到 CSV 文件
- mfc - (MFC) .RC 文件找不到 winres.h 文件
- python - 像在Mysql中一样删除Clickhouse中的一些数据
- visual-studio - Visual Studio 2019 未更新/删除服务引用
- mysql - 在mysqldump中输入文件路径和日期时出现的错误如何解决?
- javascript - Highchart极坐标/面积图径向渐变
- flutter - 读取文件返回 null Flutter