MySQL Orderby 숫자, Nulls 마지막
현재 저는 진술서에서 매우 기본적인 OrderBy를하고 있습니다.
SELECT * FROM tablename WHERE visible=1 ORDER BY position ASC, id DESC
이것의 문제점은 'position'에 대한 NULL 항목이 0으로 취급된다는 것입니다. 따라서 position이 NULL 인 모든 항목은 1,2,3,4가있는 항목보다 먼저 나타납니다. 예 :
NULL, NULL, NULL, 1, 2, 3, 4
다음 순서를 달성 할 수있는 방법이 있습니까?
1, 2, 3, 4, NULL, NULL, NULL.
MySQL에는 문서화되지 않은 구문이있어 널을 마지막으로 정렬합니다. 열 이름 앞에 빼기 부호 (-)를 놓고 ASC를 DESC로 전환하십시오.
SELECT * FROM tablename WHERE visible=1 ORDER BY -position DESC, id DESC
본질적으로 position DESC
NULL 값을 마지막 에 배치하는 것과는 반대 이지만 그렇지 않으면와 동일합니다 position ASC
.
좋은 참조는 여기 http://troels.arvin.dk/db/rdbms#select-order_by
나는 이것이 대부분 좋은 해결책이라는 것을 알았다.
SELECT * FROM table ORDER BY ISNULL(field), field ASC;
같은 것
SELECT * FROM tablename where visible=1 ORDER BY COALESCE(position, 999999999) ASC, id DESC
999999999를 필드의 최대 값으로 바꾸십시오.
마지막 NULL
SELECT * FROM table_name ORDER BY id IS NULL, id ASC
이 쿼리를 사용해보십시오.
SELECT * FROM tablename
WHERE visible=1
ORDER BY
CASE WHEN position IS NULL THEN 1 ELSE 0 END ASC,id DESC
명령문 에서 NULL을 통합 할 수 있습니다 ORDER BY
.
select * from tablename
where <conditions>
order by
coalesce(position, 0) ASC,
id DESC
NULL을 맨 아래에서 정렬하려면을 시도하십시오 coalesce(position, 100000)
. (두 번째 숫자를 position
db 의 다른 숫자보다 크게 만드십시오 .)
NULL 인스턴스를 다른 값으로 바꿔서 먼저 (0 또는 -1과 같이) 마지막으로 (큰 숫자 나 문자로) 정렬 할 수 있습니다.
SELECT field1, IF(field2 IS NULL, 9999, field2) as ordered_field2
FROM tablename
WHERE visible = 1
ORDER BY ordered_field2 ASC, id DESC
SELECT * FROM tablename WHERE visible=1 ORDER BY CASE WHEN `position` = 0 THEN 'a' END , position ASC
A의 DATE
열 당신은 사용할 수 있습니다 :
마지막 NULL :
ORDER BY IFNULL(`myDate`, '9999-12-31') ASC
마지막 공백 :
ORDER BY IF(`myDate` = '', '9999-12-31', `myDate`) ASC
다음과 같은 결과를 얻으려면 :
1, 2, 3, 4, NULL, NULL, NULL.
USE 구문, -(minus sign)
필드 이름 앞에 배치 하고 역 order_type을 사용하십시오 (처럼 : ASC 순서로 주문하려면 DESC를 사용하거나 DESC 순서를 원하면 ASC를 사용하십시오)
SELECT * FROM tablename WHERE visible=1 ORDER BY -position DESC
NULLS LAST로 주문하지 않는 이유는 무엇입니까?
SELECT *
FROM tablename
WHERE visible = 1
ORDER BY position ASC NULLS LAST, id DESC
참고 URL : https://stackoverflow.com/questions/2051602/mysql-orderby-a-number-nulls-last
'IT' 카테고리의 다른 글
12시 AM / PM 형식으로 JavaScript 날짜 시간을 어떻게 표시합니까? (0) | 2020.04.01 |
---|---|
"프로젝트"너겟 구성을 가져 오는 것이 유효하지 않은 오류입니다. (0) | 2020.04.01 |
스크롤보기 내부의 Android 목록보기 (0) | 2020.04.01 |
파이썬에서 명령 행 프로그램 실행하기 (0) | 2020.04.01 |
결제 처리기-웹 사이트에서 신용 카드를 수락하려면 무엇을 알아야합니까? (0) | 2020.04.01 |