【发布时间】:2014-06-11 09:22:31
【问题描述】:
SQL结果如何按name列排序,如果没有设置名称,则按email排序。
+----+-------+-----------------+
| ID | name | email |
+----+-------+-----------------+
| 1 | John | john@gmail.com |
| 2 | --- | linda@gmail.com |
| 3 | --- | kikli@gmail.com |
| 4 | Peter | peter@gmail.com |
+----+-------+-----------------+
结果应该是这样的:
John, kikli@gmail.com, linda@gmail.com, Peter
答案:
$users = $this->em->createQueryBuilder()
->select('a.id, coalesce(concat(a.firstName, concat(\' \', a.lastName)), a.email) as orderColumn')
->from('Company\User\Admin', 'a')
->orderBy('orderColumn','ASC')
->getQuery()
->getScalarResult();
【问题讨论】:
标签: sql postgresql sql-order-by multiple-columns