我正在尝试按自定义顺序对一组结果进行排序。该查询对表中的所有值求和,并按特定类型对它们进行分组。我想按类型对记录进行排序,但这不是按字母顺序排列的。
这些是我想要结果的值和顺序:
Prevention
Minimisation
Reuse
Recycling
Energy Recovery
Disposal
这是我正在使用的查询:
$wasteHierarchy = $dm->createQuery('
SELECT SUM(efu.totalUom) AS totalTonne, efu.wasteHierarchy
FROM CoreBundle:EnviroFiguresUpload efu
WHERE efu.completionDate BETWEEN :start AND :end
AND efu.division IN (:profile)
GROUP BY efu.wasteHierarchy
ORDER BY efu.completionDate DESC'
)->setParameters(array(
'start' => $ds,
'end' => $de,
'profile' => $divisionProfiles
));
$wasteHier = $wasteHierarchy->getResult();
我尝试过这个查询,但它在 Symfony2 中抛出错误:
$wasteHierarchy = $dm->createQuery('
SELECT SUM(efu.totalUom) AS totalTonne, efu.wasteHierarchy
FROM CoreBumysql order by resultndle:EnviroFiguresUpload efu
WHERE efu.completionDate BETWEEN :start AND :end
AND efu.division IN (:profile)
GROUP BY efu.wasteHierarchy
ORDER BY efu.wasteHierarchy = :prevention, efu.wasteHierarchy = :minimisation, efu.wasteHierarchy = :reuse, efu.wasteHierarchy = :recycling, efu.wasteHierarchy = :energy, efu.wasteHierarchy = :disposal'
)->setParameters(array(
'start' => $ds,
'end' => $de,
'profile' => $divisionProfiles,
'prevention' => 'Prevention',
'minisation' => 'Minimisation',
'reuse' => 'Reuse',
'recycling' => 'Recycling',
'energy' => 'Energy Recovery',
'disposal' => 'Disposal'
));
$wasteHier = $wasteHierarchy->getResult();
有什么想法吗?
编辑 1
这是 Symfony2 生成的错误:
[2/2] QueryException: [Syntax Error] line 0, col 260: Error: Expected end of string, got '='
[1/2] QueryException: SELECT SUM(efu.totalUom) AS totalTonne, efu.wasteHierarchy FROM CoreBundle:EnviroFiguresUpload efu WHERE efu.completionDate BETWEEN :start AND :end AND efu.division IN (:profile) GROUP BY efu.wasteHierarchy ORDER BY efu.wasteHierarchy = :prevention ASC, efu.wasteHierarchy = :minimisation ASC, efu.wasteHierarchy = :reuse ASC, efu.wasteHierarchy = :recycling ASC, efu.wasteHierarchy = :energy ASC, efu.wasteHierarchy = :disposal ASC +
最佳答案
在 SQL 中,您只能按列排序,而不能按列值排序。 这就是 QueryException 的原因。
可以在 mysql 中执行您想要的操作(也可能在其他 dbms 中):ORDER BY FIELD
关于mysql - Symfony2 中通过多个值对数据库中的记录进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27585375/