MySql:按值排序结果,其中value =其他表中的值

时间:2013-07-13 19:08:47

标签: mysql sorting

我希望我的标题有意义但基本上我需要做的是从mysql表中选择一些行,但我希望首先列出一个特定的行。通常我会为此使用“按字段排序”,但此特定行必须匹配另一个表中的值。

SCHEDULES TABLE
----------
ID
NAME
COMPANYID
DESCRIPTION


COMPANIES TABLE
----------
ID
NAME
ACTIVESCHEDULEID

所以我想从scheduleles表中选择所有的计划,其中companyid = 1,但是需要首先列出作为该公司活动计划的计划,并且该位信息存储在公司表中。

我希望我能做到这样的事情:

select s.id
from schedules s, companies c
where s.companyid = c.id 
and s.companyid = 1 
order by field(s.id,s.id = c.activescheduleid)

但那不适合我。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

select s.id
from schedules s, companies c
where s.companyid = c.id 
and s.companyid = 1 
order by
  s.id,
  s.id = c.activescheduleid

您可能希望将ASCDESC用于第二顺序条件,具体取决于先排序或最后排序的标识。

答案 1 :(得分:0)

order by子句中可以有多个条件。第一个可以与活动的scheduleid匹配:

select s.id
from schedules s join
     companies c
     on s.companyid = c.id 
where s.companyid = 1 
order by (s.id = c.activescheduleid) desc, s.id

desc是因为MySQL中的“true”值被视为1而“false”被视为0。因此,这会为活动计划ID返回1。要首先显示,请使用desc