2013-07-13 63 views
0

我希望我的标题有意义,但基本上我需要做的是从mysql表中选择一些行,但我希望一个特定行始终列在第一位。通常我会使用“按字段排序”,但这个特定的行必须与另一个表中的值相匹配。MySql:按值排序结果其中value =其他表中的值

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


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

所以我想从日程安排表,其中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) 

但是,这不是为我工作。有任何想法吗?

回答

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中的“真”值被视为1和“假”被视为0。所以,这返回1为活动日程安排ID。为了首先出现,请使用desc

+0

谢谢。这么简单,但却让我难堪。 :-) – Vincent

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二阶条件,根据身份进行排序第一个或最后。

相关问题