我从我的数据库中获取属于某个工作站组的所有工作站。 SELECT * FROM stations WHERE station_group_id = 1
。
现在,从所有获取的结果中,我希望首先出现某些结果(例如,首先出现line_id = 2的工作站)。例如,如果这是我的stations
表:
id | station_group_id | line_id
-------------------------------
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3
我希望输出为:
id | station_group_id | line_id
-------------------------------
1 | 1 | 2
2 | 1 | 1
3 | 1 | 3
因此line_id = 2
是输出中的第一条记录。
我考虑使用ORDER BY
,但这不是一个订单问题,它更像是一个“偏好”。
那么,是否可以根据条件在输出之上放置一些记录,最好是在一个查询中?谢谢!
答案 0 :(得分:1)
SELECT * FROM stations WHERE station_group_id = 1 and line_id = 2
union
SELECT * FROM stations WHERE station_group_id = 1 and
line_id != 2 order by line_id asc
答案 1 :(得分:1)
尝试下面的内容:
SELECT * FROM stations
WHERE station_group_id = 1
ORDER BY if(line_id in('2','X','Y','Z'),0,1)
答案 2 :(得分:0)
正如你所说,它实际上是一个偏好,所以你应该将它建模为表格上的额外字段(例如序数,或顺序,或者preferredOrder),或者你按照line_id进行排序,并做“特殊”在代码中排序。 (找到id = 2的元素,移到顶部)