Python SQLite - Đặt hàng theo
Trong khi tìm nạp dữ liệu bằng cách sử dụng truy vấn SELECT, bạn sẽ nhận được các bản ghi theo cùng thứ tự mà bạn đã chèn chúng.
Bạn có thể sắp xếp các kết quả theo thứ tự mong muốn (tăng dần hoặc giảm dần) bằng cách sử dụng Order Bymệnh đề. Theo mặc định, mệnh đề này sắp xếp các kết quả theo thứ tự tăng dần, nếu bạn cần sắp xếp chúng theo thứ tự giảm dần, bạn cần sử dụng “DESC” một cách rõ ràng.
Cú pháp
Sau đây là cú pháp của mệnh đề ORDER BY trong SQLite.
SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];
Thí dụ
Giả sử chúng ta đã tạo một bảng có tên CRICKETERS bằng truy vấn sau:
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Age int,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
sqlite>
Và nếu chúng ta đã chèn 5 bản ghi vào nó bằng cách sử dụng câu lệnh INSERT như -
sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>
Sau câu lệnh SELECT truy xuất các hàng của bảng CRICKETERS theo thứ tự tăng dần của độ tuổi của chúng -
sqlite> SELECT * FROM CRICKETERS ORDER BY AGE;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- -------------
Virat Kohli 30 Delhi India
Rohit Sharma 32 Nagpur India
Shikhar Dhawan 33 Delhi India
Jonathan Trott 38 CapeTown SouthAfrica
Kumara Sangakkara 41 Matale Srilanka
sqlite>
Bạn có thể sử dụng nhiều cột để sắp xếp các bản ghi của một bảng. Các câu lệnh SELECT sau đây sắp xếp các bản ghi của bảng CRICKETERS dựa trên các cột AGE và FIRST_NAME .
sqlite> SELECT * FROM CRICKETERS ORDER BY AGE, FIRST_NAME;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- -------------
Virat Kohli 30 Delhi India
Rohit Sharma 32 Nagpur India
Shikhar Dhawan 33 Delhi India
Jonathan Trott 38 CapeTown SouthAfrica
Kumara Sangakkara 41 Matale Srilanka
sqlite>
Theo mặc định, ORDER BY mệnh đề sắp xếp các bản ghi của một bảng theo thứ tự tăng dần, bạn có thể sắp xếp các kết quả theo thứ tự giảm dần bằng cách sử dụng DESC như sau:
sqlite> SELECT * FROM CRICKETERS ORDER BY AGE DESC;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- -------------
Kumara Sangakkara 41 Matale Srilanka
Jonathan Trott 38 CapeTown SouthAfrica
Shikhar Dhawan 33 Delhi India
Rohit Sharma 32 Nagpur India
Virat Kohli 30 Delhi India
sqlite>
Mệnh đề ORDER BY sử dụng python
Để truy xuất nội dung của một bảng theo thứ tự cụ thể, hãy gọi phương thức execute () trên đối tượng con trỏ và chuyển câu lệnh SELECT cùng với mệnh đề ORDER BY, làm tham số cho nó.
Thí dụ
Trong ví dụ sau, chúng ta đang tạo một bảng có tên và Nhân viên, điền nó vào và lấy lại các bản ghi của nó theo thứ tự (tăng dần) tuổi của chúng, sử dụng mệnh đề ORDER BY.
import psycopg2
#establishing the connection
conn = psycopg2.connect(
database="mydb", user='postgres', password='password', host='127.0.0.1', port= '5432'
)
#Setting auto commit false
conn.autocommit = True
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
#Creating a table
sql = '''CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT, SEX CHAR(1),
INCOME INT,
CONTACT INT
)'''
cursor.execute(sql)
#Populating the table
#Populating the table
cursor.execute('''INSERT INTO EMPLOYEE
(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES
('Ramya', 'Rama priya', 27, 'F', 9000),
('Vinay', 'Battacharya', 20, 'M', 6000),
('Sharukh', 'Sheik', 25, 'M', 8300),
('Sarmista', 'Sharma', 26, 'F', 10000),
('Tripthi', 'Mishra', 24, 'F', 6000)''')
conn.commit()
#Retrieving specific records using the ORDER BY clause
cursor.execute("SELECT * from EMPLOYEE ORDER BY AGE")
print(cursor.fetchall())
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
Đầu ra
[('Vinay', 'Battacharya', 20, 'M', 6000, None),
('Tripthi', 'Mishra', 24, 'F', 6000, None),
('Sharukh', 'Sheik', 25, 'M', 8300, None),
('Sarmista', 'Sharma', 26, 'F', 10000, None),
('Ramya', 'Rama priya', 27, 'F', 9000, None)]