저장된 데이터




Select a.uid, a.user_score, count(a.uid) as ranking from tb_user_rank a, tb_user_rank b where a.user_score < b.user_score OR a.uid=b.uid GROUP BY a.uid ORDER BY ranking LIMIT 30



실행후 위와 같이 랭킹이 정리 되었습니다.





신고

Join 에는 여러 문법이 있지만. 



무조건 왼쪽 기준으로 정렬하게 되는 LEFT JOIN 을 가장 많이 쓰게 되는것 같습니다. 



ex) select * from tb_user a left join tb_id b on a.id=b.id ;

LEFT JOIN은 위와 같이 쓰는게 가장 보편적입니다. 


tb_user 테이블의 별칭 a, tb_id 테이블의 별칭 b


ON  절에서 a의 id와 b의 id를 붙여주면 

a 기준으로 b의 값들이 조인합니다. 



여기에 조건이 추가되죠 where a.id=10; 

a.id가 10인 애들만 선택됩니다. 

ex) select * from tb_user a left join tb_id b on a.id=b.id where a.id=10; 


근데 난감한게 b의 값 기준으로 선택하고 싶습니다. 

그때는 on절에 and를 이용하여 값을 추가하면 됩니다. 

ex) select * from tb_user a left join tb_id b on a.id=b.id and b.name='빵구똥꾸' where a.id=10; 


그러면 a.id가 10이면서 b.name가 빵꾸똥꾸인 애들만 조인됩니다. 








신고



오름 차순으로 정렬 하다 보면 null 이 가장 위로 정렬 됩니다.



하지만 null인 값들은 필요가 없을때가 있습니다. 


null을 제외한 오름차순 정렬은 


order by 절에서 order by 'name' is null asc, 'name' asc;


와 같은 식으로 써주면 됩니다. 


ex) select name from tb_user order by 'name' is null asc, 'name' asc;

      select [레코드명] from [테이블명] order by [레코드명] is null asc, [레코드명] asc; 



즐코딩 하세요








신고

+ Recent posts