首页 > 解决方案 > 如何按另一行值对表结果排序

问题描述

我创建了一个查询来选择record表中存在其他行的列,但我想添加order by另一个行值的哪个订单。

SELECT 
  record 
FROM 
  record_attributes 
GROUP BY 
  record 
HAVING 
  sum(type = 'lead' AND option_name = 'pupil_cap' AND value > 0) > 0 AND 
  sum(type = 'lead' AND option_name = 'car_type' AND value = 'Manual') > 0 AND 
  sum(type = 'lead' AND option_name = 'instructor_areas_covered' AND value = '26') > 0 AND 
  sum(type = 'lead' AND option_name = 'diary_updates' AND value = '1') > 0

如何使用以下数据通过同一表中的另一个查询对这些结果进行排序:

ORDER BY record_attributes.value WHERE record_attributes.type = 'lead' AND record_attributes.option_name = 'instructor_rank'

如果该行不存在,那么使用这个:

ORDER BY record_attributes.value WHERE record_attributes.type = 'lead' AND record_attributes.option_name = 'instructor_start_date'

标签: mysqlsql

解决方案


不确定我理解正确。
但是像这样的东西?

...
ORDER BY 
MAX(CASE WHEN type = 'lead' AND option_name = 'instructor_rank' THEN value END),
MAX(CASE WHEN type = 'lead' AND option_name = 'instructor_start_date' THEN value END)

您可以在rextester上对其进行测试。


推荐阅读