2013-07-13 99 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二階條件,根據身份進行排序第一個或最後。

相關問題