【发布时间】:2021-02-11 20:11:05
【问题描述】:
我的查询使用左连接从表 objects_values 中获取 多个 值。我无法按照我想要的方式对结果进行排序;如果是ASC,则先显示属性值最低的对象,如果是DESC,则先显示属性值最高的对象。
当订单方向是 DESC 时,我实际上已经设法让它工作,但是当方向是 ASC 时,无论attributeId 是什么,它们都会转到结果的底部。
将 237 个结果放在底部的查询如下:
SELECT
objects.id,
objects.title,
values.value
FROM objects
LEFT JOIN objects_values AS values ON values.objectId=objects.id
WHERE objects.categoryId IN (195)
ORDER BY
CASE WHEN values.attributeId=237 THEN values.value END ASC,
objects.id asc
我希望查询总是先按属性 237 排序,然后将这些结果放在结果中,无论 237 的值是 0.1 还是 10。
如果所有连接的表都有唯一的名称,这将很容易,但此查询可以包含来自 objects_values 表的 20 个不同属性。
我是不是走错路了?
【问题讨论】: