🧚 Άκου! Το Beekeeper Studio είναι ένα γρήγορο, σύγχρονο και open source GUI για βάσεις δεδομένων Λήψη
8 Ιανουαρίου 2026 Από τον Matthew Rathbone

Το ORDER BY ταξινομεί τις γραμμές που επιστρέφει ένα query με βάση μία ή περισσότερες στήλες ή εκφράσεις, σε αύξουσα ή φθίνουσα σειρά. Χωρίς αυτό, η βάση δεδομένων επιστρέφει τις γραμμές με όποια σειρά είναι πιο γρήγορη. Τα παραδείγματα λειτουργούν σε PostgreSQL, MySQL, SQLite και SQL Server.

Πώς να χρησιμοποιήσεις το ORDER BY

Βάλε το ORDER BY στο τέλος του query, μετά τα WHERE, GROUP BY και HAVING· μόνο το LIMIT έρχεται μετά από αυτό. Γράψε τις στήλες για την ταξινόμηση. Η καθεμία ταξινομείται σε αύξουσα σειρά, εκτός αν προσθέσεις DESC:

SELECT columns
FROM table_name
ORDER BY column1 [ASC | DESC], column2 [ASC | DESC];
-- Input: customers
-- customer_id | name        | signup_date
-- ------------+-------------+------------
-- 1           | Olivia Hart | 2024-03-12
-- 2           | Marcus Lee  | 2023-11-05
-- 3           | Zara Ahmed  | 2024-01-27
-- 4           | Ben Carter  | 2023-08-19

SELECT customer_id, name, signup_date
FROM customers
ORDER BY signup_date;

-- Output:
-- customer_id | name        | signup_date
-- ------------+-------------+------------
-- 4           | Ben Carter  | 2023-08-19
-- 2           | Marcus Lee  | 2023-11-05
-- 3           | Zara Ahmed  | 2024-01-27
-- 1           | Olivia Hart | 2024-03-12

SELECT customer_id, name, signup_date
FROM customers
ORDER BY signup_date DESC;

-- Output:
-- customer_id | name        | signup_date
-- ------------+-------------+------------
-- 1           | Olivia Hart | 2024-03-12
-- 3           | Zara Ahmed  | 2024-01-27
-- 2           | Marcus Lee  | 2023-11-05
-- 4           | Ben Carter  | 2023-08-19

Κανόνες που πρέπει να ξέρεις

  • Το DESC ισχύει μόνο για τη στήλη ακριβώς πριν από αυτό. Το ORDER BY author, published DESC ταξινομεί τους συγγραφείς από το Α ως το Ω και μετά τα βιβλία κάθε συγγραφέα από το νεότερο:
-- Input: books
-- title               | author          | published
-- --------------------+-----------------+----------
-- Emma                | Jane Austen     | 1815
-- Bleak House         | Charles Dickens | 1853
-- Pride and Prejudice | Jane Austen     | 1813
-- Hard Times          | Charles Dickens | 1854

SELECT title, author, published
FROM books
ORDER BY author, published DESC;

-- Output:
-- title               | author          | published
-- --------------------+-----------------+----------
-- Hard Times          | Charles Dickens | 1854
-- Bleak House         | Charles Dickens | 1853
-- Emma                | Jane Austen     | 1815
-- Pride and Prejudice | Jane Austen     | 1813
  • Χωρίς ORDER BY, η σειρά δεν είναι εγγυημένη. Οι γραμμές συχνά επιστρέφουν με τη σειρά που εισήχθησαν, μέχρι να μεγαλώσει ο πίνακας, να αλλάξει ένα index ή να εκτελεστεί το query παράλληλα. Το ίδιο ισχύει και για το LIMIT: χωρίς ORDER BY επιστρέφει όποιες γραμμές διαβάσει πρώτες η βάση δεδομένων.
  • Οι ισόβαθμες γραμμές επιστρέφουν με τυχαία σειρά. Πρόσθεσε μια μοναδική στήλη, όπως το ID, ως τελευταία στήλη ταξινόμησης, ώστε η σειρά να είναι ίδια σε κάθε εκτέλεση:
-- Input: customers
-- customer_id | name       | signup_date
-- ------------+------------+------------
-- 3           | Mara Lind  | 2024-01-15
-- 1           | Owen Price | 2024-01-10
-- 4           | Tariq Aziz | 2024-01-15
-- 2           | Lily Shore | 2024-01-15

-- The three 2024-01-15 rows can come back in any order
SELECT * FROM customers ORDER BY signup_date;

-- Output:
-- customer_id | name       | signup_date
-- ------------+------------+------------
-- 1           | Owen Price | 2024-01-10
-- 3           | Mara Lind  | 2024-01-15
-- 4           | Tariq Aziz | 2024-01-15
-- 2           | Lily Shore | 2024-01-15

-- customer_id breaks the tie
SELECT * FROM customers ORDER BY signup_date, customer_id;

-- Output:
-- customer_id | name       | signup_date
-- ------------+------------+------------
-- 1           | Owen Price | 2024-01-10
-- 2           | Lily Shore | 2024-01-15
-- 3           | Mara Lind  | 2024-01-15
-- 4           | Tariq Aziz | 2024-01-15
  • Τα NULL μπαίνουν πρώτα, εκτός από την PostgreSQL, που τα βάζει τελευταία. Αυτό ισχύει για αύξουσα σειρά· το DESC το αντιστρέφει:
-- Input: users
-- name       | middle_name
-- -----------+------------
-- John Smith | Robert
-- Ana Lopez  | NULL
-- Kim Young  | Elise

SELECT name, middle_name
FROM users
ORDER BY middle_name;

-- Output:
-- name       | middle_name
-- -----------+------------
-- Ana Lopez  | NULL
-- Kim Young  | Elise
-- John Smith | Robert
-- (PostgreSQL puts Ana Lopez last instead)

Για να επιλέξεις πού θα μπουν τα NULL, δες τα NULLS FIRST και NULLS LAST παρακάτω.

Εναλλακτική σύνταξη

Μπορείς να ταξινομήσεις με βάση ένα alias στήλης ή τη θέση της στήλης στη λίστα του SELECT. Ένα alias σε γλιτώνει από το να επαναλαμβάνεις μια έκφραση. Η θέση είναι πιο σύντομη, αλλά χαλάει αθόρυβα όταν κάποιος αλλάξει τη λίστα του SELECT:

-- Input: employees
-- name     | monthly_salary
-- ---------+---------------
-- Ivy Chen | 5200
-- Max Dunn | 7600
-- Pia Roth | 4500

SELECT name, monthly_salary * 12 AS annual_salary
FROM employees
ORDER BY annual_salary DESC;  -- or ORDER BY 2 DESC

-- Output:
-- name     | annual_salary
-- ---------+--------------
-- Max Dunn | 91200
-- Ivy Chen | 62400
-- Pia Roth | 54000

Τα NULLS FIRST και NULLS LAST μετά από μια στήλη ταξινόμησης ορίζουν πού θα μπουν τα NULL της:

-- Input: the users table above

SELECT name, middle_name
FROM users
ORDER BY middle_name NULLS LAST;
-- MySQL and SQL Server don't support NULLS LAST. Sort on a CASE first instead:
-- ORDER BY CASE WHEN middle_name IS NULL THEN 1 ELSE 0 END, middle_name

-- Output:
-- name       | middle_name
-- -----------+------------
-- Kim Young  | Elise
-- John Smith | Robert
-- Ana Lopez  | NULL

Η MySQL έχει τη FIELD(), που ταξινομεί τις τιμές με τη σειρά που τις γράφεις. Αλλού, χρησιμοποίησε μια έκφραση CASE σαν αυτή στο Ταξινόμηση εργασιών κατά προτεραιότητα παρακάτω:

-- Input: products
-- product_name | category
-- -------------+------------
-- Cookbook     | Books
-- Raincoat     | Clothing
-- Tablet       | Electronics
-- Scarf        | Clothing

-- MySQL
SELECT * FROM products
ORDER BY FIELD(category, 'Electronics', 'Clothing', 'Books');

-- Output:
-- product_name | category
-- -------------+------------
-- Tablet       | Electronics
-- Raincoat     | Clothing
-- Scarf        | Clothing
-- Cookbook     | Books

Πότε να χρησιμοποιείς το ORDER BY;

Χρησιμοποίησε το ORDER BY όποτε η σειρά των γραμμών έχει σημασία για όποιον τις διαβάζει. Οι περισσότερες χρήσεις ανήκουν σε μία από αυτές τις τέσσερις.

Εμφάνιση λίστας με προβλέψιμη σειρά

Ονόματα από το Α ως το Ω, ημερομηνίες από την παλαιότερη, ID στη σειρά. Χωρίς ORDER BY το ίδιο query μπορεί να επιστρέψει τις γραμμές με διαφορετική σειρά από εκτέλεση σε εκτέλεση, και οι σελίδες αποτελεσμάτων μπορεί να επικαλύπτονται ή να παραλείπουν γραμμές.

Εύρεση των μεγαλύτερων ή πιο πρόσφατων τιμών

Ταξινόμησε φθίνουσα για να βάλεις πρώτα τις μεγαλύτερες, νεότερες ή ακριβότερες γραμμές και μετά πρόσθεσε LIMIT για να κρατήσεις μόνο τις πρώτες: best sellers, τις τελευταίες παραγγελίες, τις υψηλότερες βαθμολογίες.

Ταξινόμηση με περισσότερες από μία στήλες

Όταν η πρώτη στήλη ταξινόμησης έχει ισοβαθμίες, η επόμενη καθορίζει τη σειρά μέσα σε αυτές: τμήμα και μετά μισθός, τάξη και μετά βαθμός, κατάσταση και μετά ημερομηνία. Κάθε στήλη μπορεί να έχει τη δική της κατεύθυνση.

Ταξινόμηση με υπολογισμένη τιμή ή δική σου σειρά

Το ORDER BY δέχεται οποιαδήποτε έκφραση, όχι μόνο στήλες: ένα σύνολο από δύο στήλες, το μήκος ενός ονόματος ή μια έκφραση CASE που βάζει τιμές όπως High, Medium και Low σε μια σειρά που δεν θα σου δώσει το αλφάβητο.

Πραγματικά παραδείγματα με ORDER BY

Σελιδοποίηση λίστας πελατών

Το ORDER BY με LIMIT και OFFSET επιστρέφει μία σελίδα κάθε φορά. Τρεις πελάτες εγγράφηκαν την ίδια μέρα, οπότε το customer_id σπάει την ισοβαθμία. Χωρίς αυτό, η βάση δεδομένων θα μπορούσε να βάλει τον ίδιο πελάτη και στις δύο σελίδες και να παραλείψει κάποιον άλλο:

-- Input: customers
-- customer_id | name        | signup_date
-- ------------+-------------+------------
-- 1           | Nina Brandt | 2024-02-14
-- 2           | Theo Walsh  | 2023-09-30
-- 3           | Iris Novak  | 2024-02-14
-- 4           | Felix Moore | 2024-02-14
-- 5           | June Park   | 2024-03-22

-- Page 1
SELECT customer_id, name, signup_date
FROM customers
ORDER BY signup_date, customer_id
LIMIT 2 OFFSET 0;

-- Output:
-- customer_id | name        | signup_date
-- ------------+-------------+------------
-- 2           | Theo Walsh  | 2023-09-30
-- 1           | Nina Brandt | 2024-02-14

-- Page 2
SELECT customer_id, name, signup_date
FROM customers
ORDER BY signup_date, customer_id
LIMIT 2 OFFSET 2;
-- SQL Server has no LIMIT: use OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY

-- Output:
-- customer_id | name        | signup_date
-- ------------+-------------+------------
-- 3           | Iris Novak  | 2024-02-14
-- 4           | Felix Moore | 2024-02-14

Εμφάνιση των τριών πρώτων ενός leaderboard

Ταξινόμησε τις βαθμολογίες από την υψηλότερη στη χαμηλότερη και κράτα τις τρεις πρώτες:

-- Input: players
-- username  | score
-- ----------+------
-- quokka42  | 1870
-- nightowl  | 2310
-- pixelpete | 1525
-- zara_k    | 2045
-- bytebard  | 1990

SELECT username, score
FROM players
ORDER BY score DESC
LIMIT 3;
-- SQL Server has no LIMIT: write SELECT TOP 3 username, score instead

-- Output:
-- username | score
-- ---------+------
-- nightowl | 2310
-- zara_k   | 2045
-- bytebard | 1990

Αναφορά παραγγελιών κατά κατάσταση, αξία και ημερομηνία

Οι καταστάσεις ταξινομούνται αλφαβητικά. Μέσα σε κάθε κατάσταση οι μεγαλύτερες παραγγελίες έρχονται πρώτες, και οι παραγγελίες ίδιας αξίας εμφανίζονται από τη νεότερη:

-- Input: orders
-- order_id | status     | order_value | order_date
-- ---------+------------+-------------+-----------
-- 1001     | Shipped    | 120.00      | 2024-03-02
-- 1002     | Delivered  | 75.50       | 2024-02-20
-- 1003     | Shipped    | 120.00      | 2024-03-05
-- 1004     | Processing | 42.00       | 2024-03-06
-- 1005     | Delivered  | 210.00      | 2024-02-28

SELECT order_id, status, order_value, order_date
FROM orders
ORDER BY status ASC, order_value DESC, order_date DESC;

-- Output:
-- order_id | status     | order_value | order_date
-- ---------+------------+-------------+-----------
-- 1005     | Delivered  | 210.00      | 2024-02-28
-- 1002     | Delivered  | 75.50       | 2024-02-20
-- 1004     | Processing | 42.00       | 2024-03-06
-- 1003     | Shipped    | 120.00      | 2024-03-05
-- 1001     | Shipped    | 120.00      | 2024-03-02

Ταξινόμηση εργασιών κατά προτεραιότητα

Η αλφαβητική σειρά θα έδινε High, Low, Medium. Μια έκφραση CASE μετατρέπει κάθε προτεραιότητα σε αριθμό για ταξινόμηση. Οτιδήποτε άλλο, εδώ ένα NULL, παίρνει 4 και μπαίνει τελευταίο, ενώ η προθεσμία ταξινομεί τις εργασίες μέσα σε κάθε προτεραιότητα:

-- Input: tasks
-- task_name      | priority | due_date
-- ---------------+----------+-----------
-- Update docs    | Low      | 2024-06-03
-- Fix login bug  | High     | 2024-06-10
-- Plan offsite   | NULL     | 2024-05-20
-- Renew SSL cert | High     | 2024-06-01
-- Review PR      | Medium   | 2024-06-04

SELECT task_name, priority, due_date
FROM tasks
ORDER BY
  CASE priority
    WHEN 'High' THEN 1
    WHEN 'Medium' THEN 2
    WHEN 'Low' THEN 3
    ELSE 4
  END,
  due_date;

-- Output:
-- task_name      | priority | due_date
-- ---------------+----------+-----------
-- Renew SSL cert | High     | 2024-06-01
-- Fix login bug  | High     | 2024-06-10
-- Review PR      | Medium   | 2024-06-04
-- Update docs    | Low      | 2024-06-03
-- Plan offsite   | NULL     | 2024-05-20

Διάβασε περισσότερα για το ORDER BY

Σε αυτό το blog:

Επίσημη τεκμηρίωση:

Το Beekeeper Studio είναι ένα δωρεάν & open source GUI για βάσεις δεδομένων

Το καλύτερο εργαλείο για SQL queries & επεξεργασία που έχω χρησιμοποιήσει ποτέ. Μου δίνει ό,τι χρειάζομαι για να διαχειρίζομαι τη βάση δεδομένων μου. - ⭐⭐⭐⭐⭐ Mit

Το Beekeeper Studio είναι γρήγορο, εύχρηστο και κατανοητό με την πρώτη ματιά. Υποστηρίζει πάρα πολλές βάσεις δεδομένων και δουλεύει άψογα σε Windows, Mac και Linux.

Η έκδοση του Beekeeper για Linux έχει 100% όλες τις λειτουργίες, χωρίς εκπτώσεις και χωρίς συμβιβασμούς.

Τι λένε οι χρήστες για το Beekeeper Studio

★★★★★
"Το Beekeeper Studio αντικατέστησε πλήρως την παλιά μου ροή εργασίας με SQL. Είναι γρήγορο, εύχρηστο και κάνει τη δουλειά με βάσεις δεδομένων ξανά ευχάριστη."
— Alex K., Database Developer
★★★★★
"Έχω δοκιμάσει πολλά GUI για βάσεις δεδομένων, αλλά το Beekeeper βρίσκει την τέλεια ισορροπία ανάμεσα σε δυνατότητες και απλότητα. Απλώς δουλεύει."
— Sarah M., Full Stack Engineer

Έτοιμος να βελτιώσεις τη ροή εργασίας σου με SQL;

download Δωρεάν λήψη