首页 > 解决方案 > 如何通过 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     |

标签: sqljoinspring-data-jpaspring-datasql-order-by

解决方案


你似乎在寻找的是

ORDER BY COALESCE(name, scientific_name) 

您可以在注释中提供的 JPQL 语句中使用它,@Query它也应该在本机查询中工作,因为它是标准 SQL 并且被许多数据库支持。

如果您的“空”列不包含null空字符串,则可以使用以下方法处理:

ORDER BY COALESCE(NULLIF(name, ''), scientific_name) 

推荐阅读