2011-11-22 4 views
1

표를 주제를 오름차순으로 정렬 할 5 -6 7-1 ...)질의 순서는

+--------+----+ 
| name | id | 
+--------+----+ 
| tree | 4 | 
| horse | 6 | 
| bird | 7 | 
| banana | 1 | 
| raq | 2 | 
| apple | 3 | 
+--------+----+ 

내 쿼리 :

select subject_url,subjects.id 
    from students_group 
    left join teacher_group on teacher_group.group_school_id = students_group.group_id 
    left join subjects on teacher_group.subject_id = subjects.id 
    where students_group.user_id = 83 
    ORDER BY subjects.id = 5 desc 

하지만이 출력이 있습니다 :

+--------+----+ 
| name | id | 
+--------+----+ 
| tree | 4 | 
| apple | 3 | 
| banana | 1 | 
| horse | 6 | 
| bird | 7 | 
| raq | 2 | 
+--------+----+ 

예상대로 작동하게하려면 어떻게해야합니까?

답변

0
ORDER BY 
if (subjects.id=$id_subject, -1, 
    if (subjects.id>$id_subject, 0, 1) 
), subjects.id 
+0

첫째, 그 행 사이, 그들은 명령을 받게됩니다 상승 !!!!!! 고마워 – user1029834

1

subjects.id> = 5 DESC BY

ORDER 시도는

"subjects.id> = 5"반환 오름차순

을 subjects.id 1 또는 0, 그래서 올 것이다 true 인 행 작업 ID

0
select subject_url,subjects.id 
from students_group 
left join teacher_group on teacher_group.group_school_id = students_group.group_id 
left join subjects on teacher_group.subject_id = subjects.id 
where students_group.user_id = 83 
ORDER BY 
    (subjects.id >= 4) DESC 
    , subjects.id  ASC 
에 의해