programing

mySQL에서 1, 10, 11, 12가 아닌 1, 2, 3을 주문하는 방법

topblog 2023. 10. 10. 20:02
반응형

mySQL에서 1, 10, 11, 12가 아닌 1, 2, 3을 주문하는 방법

다음 코드는 id의 1, 10, 11, 12 순으로 출력됩니다.

1,2,3,4로 만들고 싶습니다.

제가 무엇을 해야 하는지 누가 말해주실 수 있나요?

$Q = $this->db->query('SELECT P.*, C.Name AS CatName FROM products AS P LEFT JOIN categories C ON C.id = P.category_id');

미리 감사드립니다.

먼저 마지막에 절별로 주문을 추가합니다.

ORDER BY category_id

category_id가 문자열이면 정수처럼 처리해야 합니다.몇 가지 방법이 있습니다.저는 보통 0을 더합니다.캐스팅도 가능합니다.

ORDER BY category_id + 0

앞서 언급한 대로 MySQL은 영숫자 정렬을 지원하지 않습니다.이를 해결하기 위한 일반적인 방법은 길이별로 먼저 주문하는 것입니다.

ORDER BY LENGTH(column_name), column_name

값의 숫자가 아닌 부분의 길이가 동일한 한, 이 값은 10 이전에 1, 100 이전에 10 등으로 정렬됩니다.

다음을 수행하여 명시적인 캐스트를 수행할 수 있습니다.

ORDER BY CAST(category_id AS UNSIGNED INTEGER)

그러나 숫자 값만 포함하는 필드도 숫자 유형이어야 하므로 데이터베이스 레이아웃을 다시 고려해야 합니다.

행운을 빌어요, 파비안

1,2,3,4를 담고 있는 열이 다음과 같은지 확인합니다.INTtype, TEXT이면 숫자 순서는 얻을 수 없지만 1, 10, 11, 2, 22, 23, 31 등을 설명합니다.

그리고 다른 사람들이 언급한 것처럼, 사용.ORDER BY

varchar, char는 작업하지 않고 숫자 값(int)에 대해서만 작업하여 순서를 정합니다.

category_id는 숫자로 표시해야 합니다. 그렇지 않으면 숫자로 값을 캐스트해야 합니다.

음, 당신은 아무 것도 설정하지 않았습니다.ORDER BY

언급URL : https://stackoverflow.com/questions/1833077/how-to-order-1-2-3-not-1-10-11-12-in-mysql

반응형