sql - 如何通过 ACROSS 多列进行订单
问题描述
我需要跨多个列进行排序。
我正在使用 Spring data jpa 进行查询。
例如,考虑以下数据集:
id | name | scientific_name
---------------------------
1 | Rose |
2 | | Canna generalis
3 | | Dianthus chinensis
4 | Hibiscus |
5 | | Helianthus
6 | Daisy |
订购时,我想同时对名称和科学名称执行订购。
不喜欢按名称排序,然后按科学名称排序。
订购后所需的结果:
id | name | scientific_name
---------------------------
2 | | Canna generalis
6 | Daisy |
3 | | Dianthus chinensis
5 | | Helianthus
4 | Hibiscus |
1 | Rose |
解决方案
你似乎在寻找的是
ORDER BY COALESCE(name, scientific_name)
您可以在注释中提供的 JPQL 语句中使用它,@Query
它也应该在本机查询中工作,因为它是标准 SQL 并且被许多数据库支持。
如果您的“空”列不包含null
空字符串,则可以使用以下方法处理:
ORDER BY COALESCE(NULLIF(name, ''), scientific_name)
推荐阅读
- prometheus - 使用外部普罗米修斯的 Zeebe 指标监控
- python - Django-将 DateField 模型条目更新为默认字符串
- .net - .NET 5 Blazor 服务器 ServiceStack 模板
- angular - mat-datepicker 反应式表单在表单重置时设置默认值
- php - 如何从 MySQL 返回数据作为导航栏链接
- r - 字符变量未排序
- android - 如何从android中的firebase实时数据库中获取价值?
- python - 如何将每小时数据转换为半小时
- macos - 大写字母下录制的vim重复宏
- arrays - 黑客地球(基本 I/O 问题)玩数字 [ subarry ]