programing

MySql을 사용하여 열을 정렬할 수 있지만 0은 마지막에 올 수 있습니까?

projobs 2022. 12. 10. 13:55
반응형

MySql을 사용하여 열을 정렬할 수 있지만 0은 마지막에 올 수 있습니까?

int의 오름차순 열을 기준으로 정렬하고 싶은데 0이 마지막에 와야 합니다.MySql에서 이 작업을 수행할 수 있는 방법이 있습니까?

다음을 시도해 볼 수 있습니다.

SELECT * FROM your_table ORDER BY your_field = 0, your_field;

테스트 케이스:

CREATE TABLE list (a int);

INSERT INTO list VALUES (0);
INSERT INTO list VALUES (0);
INSERT INTO list VALUES (0);
INSERT INTO list VALUES (1);
INSERT INTO list VALUES (2);
INSERT INTO list VALUES (3);
INSERT INTO list VALUES (4);
INSERT INTO list VALUES (5);

결과:

SELECT * FROM list ORDER BY a = 0, a;

+------+
| a    |
+------+
|    1 |
|    2 |
|    3 |
|    4 |
|    5 |
|    0 |
|    0 |
|    0 |
+------+
8 rows in set (0.00 sec)

다음을 수행할 수 있습니다.

SELECT value, IF (value = 0, NULL, value) as sort_order
FROM table
ORDER BY sort_order DESC

Null 값은 목록에서 삭제됩니다.

SELECT * FROM your_table ORDER BY 0.1/your_field;

다음 쿼리가 유효합니다.

(SELECT * FROM table WHERE num!=0 ORDER BY num) UNION (SELECT * FROM table WHERE num=0)

언급URL : https://stackoverflow.com/questions/3130197/using-mysql-can-i-sort-a-column-but-have-0-come-last

반응형