2011-01-06 4 views
0

mySql에서 if/then 문을 사용할 수 있습니까? JOIN 테이블에서 열의 값을 확인하고 해당 열의 값을 기준으로 결과를 정렬하려고합니다.MySql if then

내 미안 시도 :

SELECT t1.* 
FROM t1 
JOIN t2 ON t1.ID = t2.ID 
WHERE t1.ID = '888' 
if(t2.col1 = '1') ORDER BY t1.tid ASC 
else ORDER BY RAND() 

답변

1

사용할 수 CASE : MySQL을위한 인덱스를 사용할 수 없습니다로

ORDER BY 
    CASE WHEN t2.col1 = 1 THEN t1.tid ELSE rand() END ASC 

, 그래서 잘되지 않을 수도의 성능을 조심 주문 t1.tid.

가능성이 당신이 원하는 것을 할 수 있도록 또한, 여러 가지로 주문할 수 있음을 알고 있어야합니다

ORDER BY t1.tid ASC, RAND() 

또한, 당신은 ORDER BY RAND() LIMIT 1 실제로 모든 행을 가져올 것이라는 점을 염두에 두어야 계산 각각의 난수를 정렬하고, 마지막으로 첫 번째 행만 반환합니다. 합리적인 크기의 데이터에서는 속도가 느려지고 임시 테이블도 생깁니다.