Doctrine SQL查询顺序由ASC NULL Last

问题描述 投票:2回答:2

我使用Doctrine 2.4。我尝试按优先级递增优先级为NULL,优先级为0,最后优先级为0。

SELECT * FROM campaign ORDER BY priority IS NULL, priority = 0, priority ASC

你知道我怎么能做到这一点吗?

$query->addOrderBy('c.priority', 'ASC');
symfony doctrine symfony-2.8
2个回答
1
投票
order by case when priority is null then 1 else 0 end, priority

1
投票

我找到了解决方案,我做到了:

$query->addSelect('CASE WHEN c.priority IS NULL THEN 1 ELSE 0 END as HIDDEN priority_is_null');
$query->addSelect('CASE WHEN c.priority = 0 THEN 1 ELSE 0 END as HIDDEN priority_is_zero');
$query->addOrderBy('priority_is_null', 'ASC');
$query->addOrderBy('priority_is_zero', 'ASC');
$query->addOrderBy('c.priority', 'ASC');
© www.soinside.com 2019 - 2024. All rights reserved.