2013-07-13 2 views
0

내 제목이 의미가 있지만 기본적으로 내가해야 할 일은 mysql 테이블에서 일부 행을 선택하는 것이지만 특정 행이 항상 먼저 나열되기를 바랍니다. 일반적으로 "필드 순"을 사용하지만이 특정 행은 다른 테이블의 값과 일치해야합니다.MySql : 값으로 결과 정렬 다른 테이블에서 값 = 값

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


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

그래서 나는 회사 ID = 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 차 조건 ASC 또는 DESC을 사용할 수 있습니다

답변

0

order by 절에 여러 조건이있을 수 있습니다. 첫 번째는 활성 scheduleid에 일치 될 수 있습니다 MySQL의에서 "true"로 값이 1로 취급하고 "false"로되어 있기 때문에 desc

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 

0로 처리됩니다. 따라서 활성 스케줄 ID에 대해 1을 반환합니다. 먼저 표시하려면 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 

는 첫 번째 또는 마지막 분류.

관련 문제