[mysql] Python - MySQL Order By (정렬순서)
https://homzzang.com/b/py-45
목차
ORDER BY - 결과 정렬
ORDER BY 컬럼명 ASC - 오름차순 정렬 (기본값)
ORDER BY 컬럼명 DESC - 내림차순 정렬
CAST(컬럼명 AS int) - (문자형 → 숫자형) 변환
컬럼 자체를 (문자형 → 숫자형) 변환
ORDER BY - 결과 정렬
ORDER BY 컬럼명 ASC
컬럼명 오름차순 기준으로 결과 정렬.
※ 기본값이라, ASC 안 적어도 됨.
ORDER BY 컬럼명 DESC
컬럼명 내림차순 기준으로 결과 정렬.
주의: 문자형 (varchar 타입 등)으로 저장된 경우, 숫자형으로 변환 필요.
ORDER BY 컬럼명 ASC - 오름차순 정렬 (기본값)
※ 주의: 문자형 그대로 정렬 시도 시, 원하는 순서가 안 될 수 있음.
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="autoset",
database="hz"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM hz_member ORDER BY mb_level"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
[결과값]
(2, 'AAA', '1')
(1, 'homzzang', '10')
(3, 'BBB', '2')
(4, 'CCC', '2')
(5, 'DDD', '3')
(6, 'EEE', '3')
(7, 'FFF', '3')
(8, 'GGG', '4')
(9, 'HHH', '4')
(10, 'III', '4')
(11, 'JJJ', '4')
(12, 'KKK', '5')
(13, 'LLL', '5')
(14, 'MMM', '5')
(15, 'NNN', '5')
(16, 'OOO', '5')
ORDER BY 컬럼명 DESC - 내림차순 정렬
※ 주의: 문자형 그대로 정렬 시도 시, 원하는 순서가 안 될 수 있음.
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="autoset",
database="hz"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM hz_member ORDER BY mb_level DESC"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
[결과값]
(12, 'KKK', '5')
(13, 'LLL', '5')
(14, 'MMM', '5')
(15, 'NNN', '5')
(16, 'OOO', '5')
(8, 'GGG', '4')
(9, 'HHH', '4')
(10, 'III', '4')
(11, 'JJJ', '4')
(5, 'DDD', '3')
(6, 'EEE', '3')
(7, 'FFF', '3')
(3, 'BBB', '2')
(4, 'CCC', '2')
(1, 'homzzang', '10')
(2, 'AAA', '1')
CAST(컬럼명 AS int) - (문자형 → 숫자형) 변환
(문자형 → 숫자형) 변환 후, 내림차순 정렬.
ORDER BY CAST (컬럼명 AS int) ASC
(문자형 → 숫자형) 변환 후, 내림차순 정렬.
ORDER BY CAST(컬럼명 AS int) DESC
주의: 컬럼 자체의 데이터 타입이 바뀐 것은 아님.
[오름차순]
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="autoset",
database="hz"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM hz_member ORDER BY CAST(mb_level AS int) ASC"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
결과값:
(2, 'AAA', '1')
(3, 'BBB', '2')
(4, 'CCC', '2')
(5, 'DDD', '3')
(6, 'EEE', '3')
(7, 'FFF', '3')
(8, 'GGG', '4')
(9, 'HHH', '4')
(10, 'III', '4')
(11, 'JJJ', '4')
(12, 'KKK', '5')
(13, 'LLL', '5')
(14, 'MMM', '5')
(15, 'NNN', '5')
(16, 'OOO', '5')
(1, 'homzzang', '10')
[내림차순]
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="autoset",
database="hz"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM hz_member ORDER BY CAST(mb_level AS int) DESC"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
결과값:
(1, 'homzzang', '10')
(12, 'KKK', '5')
(13, 'LLL', '5')
(14, 'MMM', '5')
(15, 'NNN', '5')
(16, 'OOO', '5')
(8, 'GGG', '4')
(9, 'HHH', '4')
(10, 'III', '4')
(11, 'JJJ', '4')
(5, 'DDD', '3')
(6, 'EEE', '3')
(7, 'FFF', '3')
(3, 'BBB', '2')
(4, 'CCC', '2')
(2, 'AAA', '1')
PS.
컬럼 자체를 (문자형 → 숫자형) 변환
처음 mb_level 필드 타입을 VARCHAR로 지정해서 문자형으로 저장.
타입 자체를 숫자로 변경하려면, INT 형 등 숫자 타입으로 컬럼 수정 .
(예)
ALTER TABLE `hz_member` CHANGE `mb_level` `mb_level` INT(4) NULL DEFAULT NULL;
PS.
Node.js ORDER BY (정렬순서)
https://homzzang.com/b/njs-18
주소 복사
랜덤 이동
Python 관련글
JavaScript 관련글
PHP 관련글
jinja 관련글
최신댓글