如何合并两个无关联SQL表的名称字段并统一按字母序排序
实现SQL语句
你需要通过UNION ALL/UNION合并两张表的名称字段后统一排序,MySQL环境下可参考以下写法:
兼容所有MySQL版本的写法
SELECT nombre FROM ( SELECT ca_nombre AS nombre FROM cancion UNION ALL SELECT bai_nombre AS nombre FROM baile ) AS combined_names ORDER BY LOWER(CONVERT(nombre USING ascii)) ASC;
MySQL 8.0+ 简化写法
MySQL 8.0及以上版本可直接指定不区分重音、不区分大小写的排序规则,代码更简洁:
SELECT ca_nombre AS nombre FROM cancion UNION ALL SELECT bai_nombre AS nombre FROM baile ORDER BY nombre COLLATE utf8mb4_0900_as_ci ASC;
参数说明
- 若需要合并后自动去除重复的名称,将
UNION ALL替换为UNION即可 CONVERT(nombre USING ascii)用于去除西班牙语等字符中的重音标记,例如将clásica转换为clasicaLOWER()统一转为小写实现大小写不敏感排序- 排序逻辑必须放在合并语句的最外层,才能实现两张表数据的统一排序
最终升序输出结果
- Amiga
- Break dance
- cumbia
- Danza clásica
- Danza irlandesa
- Flamenco
- Gracias a ti
- La gata bajo la lluvia
- Las locuras mías
- Polca
- Salsa
- samba
- Tu
内容的提问来源于stack exchange,提问作者Maicol Rojas
相关产品推荐
相关产品推荐

