티스토리 뷰

TABLE: temp

실험에 사용한 임시테이블

mysql> SELECT * FROM temp;
+------+----------+------+
| no   | id       | pw   |
+------+----------+------+
|    2 | ant      | 6666 |
|   -2 | bear     | 5555 |
|    3 | cat      | 4444 |
|    0 | dog      | 3333 |
|   -3 | elephant | 2222 |
|    1 | fox      | 1111 |
|   -1 | goat     | 0000 |
+------+----------+------+
7 rows in set (0.00 sec)
cs




- 오름차순(ASC), 내림차순(DESC) 중에 표기하지 않을 경우 기본값으로 오름차순(ASC)이 설정된다.

mysql> SELECT * FROM temp ORDER BY no;
+------+----------+------+
| no   | id       | pw   |
+------+----------+------+
|   -3 | elephant | 2222 |
|   -2 | bear     | 5555 |
|   -1 | goat     | 0000 |
|    0 | dog      | 3333 |
|    1 | fox      | 1111 |
|    2 | ant      | 6666 |
|    3 | cat      | 4444 |
+------+----------+------+
7 rows in set (0.00 sec)
 
mysql> SELECT * FROM temp ORDER BY no ASC;
+------+----------+------+
| no   | id       | pw   |
+------+----------+------+
|   -3 | elephant | 2222 |
|   -2 | bear     | 5555 |
|   -1 | goat     | 0000 |
|    0 | dog      | 3333 |
|    1 | fox      | 1111 |
|    2 | ant      | 6666 |
|    3 | cat      | 4444 |
+------+----------+------+
7 rows in set (0.00 sec)
cs


mysql> SELECT * FROM temp ORDER BY no DESC;
+------+----------+------+
| no   | id       | pw   |
+------+----------+------+
|    3 | cat      | 4444 |
|    2 | ant      | 6666 |
|    1 | fox      | 1111 |
|    0 | dog      | 3333 |
|   -1 | goat     | 0000 |
|   -2 | bear     | 5555 |
|   -3 | elephant | 2222 |
+------+----------+------+
7 rows in set (0.01 sec)
cs


- 컬럼명을 적지 않고 숫자로도 이용할 수 있다. (3은 세번째 컬럼인 pw를 뜻함)

mysql> SELECT * FROM temp ORDER BY 3;
+------+----------+------+
| no   | id       | pw   |
+------+----------+------+
|   -1 | goat     | 0000 |
|    1 | fox      | 1111 |
|   -3 | elephant | 2222 |
|    0 | dog      | 3333 |
|    3 | cat      | 4444 |
|   -2 | bear     | 5555 |
|    2 | ant      | 6666 |
+------+----------+------+
7 rows in set (0.00 sec)
cs




=, != 를 이용하는 방법


- 컬럼명 뒤에 = 값을 주면 해당 값은 가장 마지막에 출력 (ASC를 한 것과 동일하며 정렬 안 됨) 

mysql> SELECT * FROM temp ORDER BY no = 0;
+------+----------+------+
| no   | id       | pw   |
+------+----------+------+
|    2 | ant      | 6666 |
|   -2 | bear     | 5555 |
|    3 | cat      | 4444 |
|   -3 | elephant | 2222 |
|    1 | fox      | 1111 |
|   -1 | goat     | 0000 |
|    0 | dog      | 3333 |
+------+----------+------+
7 rows in set (0.00 sec)
cs


- 컬럼명 뒤에 = 값을 주고 DESC를 표기할 경우 가장 처음 출력 (정렬 안 됨)

mysql> SELECT * FROM temp ORDER BY no = 0 DESC;
+------+----------+------+
| no   | id       | pw   |
+------+----------+------+
|    0 | dog      | 3333 |
|    2 | ant      | 6666 |
|   -2 | bear     | 5555 |
|    3 | cat      | 4444 |
|   -3 | elephant | 2222 |
|    1 | fox      | 1111 |
|   -1 | goat     | 0000 |
+------+----------+------+
7 rows in set (0.01 sec)
cs


= 를 통해서 값을 비교할 경우 해당 값은 오름차순일 경우 가장 마지막에 출력이 되고, 내림차순일 경우 가장 처음에 출력이 된다.

(나머지 값들은 초기 상태 그대로 정렬하지 않고 출력한다.)


WHERE 조건절을 이용한 방법에서 설명한 것과 동일하게 1은 true, 0x01, 0b01, '1' 등으로 대체할 수 있으며 0은 false, 0x00, 0b00, '0', '문자' 로 대체해서 사용할 수 있다. 다른 숫자 값(3, -2 등)도 동일하게 대체(0x03, -0b10)할 수 있다.


숫자 뿐만 아니라 문자도 비교하여 사용할 수 있으며 등호를 부등호로 바꿀 경우 결과는 반대로 출력이 된다.

mysql> SELECT * FROM temp ORDER BY id != 'bear';
+------+----------+------+
| no   | id       | pw   |
+------+----------+------+
|   -2 | bear     | 5555 |
|    2 | ant      | 6666 |
|    3 | cat      | 4444 |
|    0 | dog      | 3333 |
|   -3 | elephant | 2222 |
|    1 | fox      | 1111 |
|   -1 | goat     | 0000 |
+------+----------+------+
7 rows in set (0.00 sec)
cs


mysql> SELECT * FROM temp ORDER BY id != 'bear' DESC;
+------+----------+------+
| no   | id       | pw   |
+------+----------+------+
|    2 | ant      | 6666 |
|    3 | cat      | 4444 |
|    0 | dog      | 3333 |
|   -3 | elephant | 2222 |
|    1 | fox      | 1111 |
|   -1 | goat     | 0000 |
|   -2 | bear     | 5555 |
+------+----------+------+
7 rows in set (0.00 sec)
cs




<, >, >=,<= =, !=, ASC, DESC를 WHERE 절과 ORDER BY 절을 통해 앞에서 열거한 내용 외에도 다양하게(지저분하게) 결과를 출력할 수 있다.

SELECT * FROM temp ORDER BY no > 2;

SELECT * FROM temp ORDER BY no <= 2 DESC;

SELECT * FROM temp ORDER BY no < -1  !=  1 DESC;

SELECT * FROM temp ORDER BY no = 2 > 3;

SELECT * FROM temp ORDER BY no != -1 <= 0 DESC;

...


댓글
댓글쓰기 폼
«   2019/06   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
링크
공지사항
Total
77,378
Today
88
Yesterday
103