获取具有ID的所有记录,但第一个记录也应与另一个条件匹配

时间:2012-02-19 21:56:52

标签: mysql sql sql-order-by

我从我的数据库中获取属于某个工作站组的所有工作站。 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,但这不是一个订单问题,它更像是一个“偏好”。

那么,是否可以根据条件在输出之上放置一些记录,最好是在一个查询中?谢谢!

3 个答案:

答案 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的元素,移到顶部)