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

Ο τελεστής «διάφορο» (not equal), που γράφεται <> ή !=, είναι αληθής όταν δύο τιμές διαφέρουν. Βάλε τον σε ένα WHERE για να αφήσεις έξω τις γραμμές που ταιριάζουν με μια τιμή. Τα παραδείγματα δουλεύουν σε PostgreSQL, MySQL, SQLite και SQL Server.

Πώς χρησιμοποιείς το not equal

Βάλε <> ή != ανάμεσα σε δύο τιμές. Σημαίνουν ακριβώς το ίδιο. Το <> είναι η γραφή του προτύπου SQL, ενώ το != είναι αυτή που χρησιμοποιούν οι περισσότερες γλώσσες προγραμματισμού.

value1 <> value2
value1 != value2
SELECT 5 <> 3;
-- Output: true

SELECT 'apple' != 'apple';
-- Output: false

SELECT NULL <> 3;
-- Output: NULL

-- MySQL and SQLite show true and false as 1 and 0. SQL Server can't
-- select a comparison like this: use it in a WHERE clause there.

Σε ένα query, το not equal μπαίνει στο WHERE και κρατά κάθε γραμμή με διαφορετική τιμή:

-- Input: tickets
-- id | subject               | status
-- ---+-----------------------+--------
-- 1  | Login fails on Safari | open
-- 2  | Typo on pricing page  | closed
-- 3  | Export times out      | pending
-- 4  | Add a dark theme      | NULL

SELECT id, subject, status
FROM tickets
WHERE status <> 'closed';

-- Output:
-- id | subject               | status
-- ---+-----------------------+--------
-- 1  | Login fails on Safari | open
-- 3  | Export times out      | pending

Το ticket 4 δεν εμφανίζεται στο αποτέλεσμα, παρόλο που το status του δεν είναι 'closed'. Αυτός είναι ο πρώτος κανόνας παρακάτω.

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

  • Το not equal δεν ταιριάζει ποτέ με NULL. Η σύγκριση του NULL με οτιδήποτε δίνει NULL (άγνωστο) και όχι true, οπότε το WHERE απορρίπτει τη γραμμή. Πρόσθεσε OR column IS NULL για να κρατήσεις γραμμές χωρίς τιμή:
-- Input: the tickets table above

SELECT id, subject, status
FROM tickets
WHERE status <> 'closed' OR status IS NULL;

-- Output:
-- id | subject               | status
-- ---+-----------------------+--------
-- 1  | Login fails on Safari | open
-- 3  | Export times out      | pending
-- 4  | Add a dark theme      | NULL
  • Ένα NULL σε λίστα NOT IN αφαιρεί κάθε γραμμή. Το status NOT IN ('closed', 'pending') είναι συντομογραφία του status <> 'closed' AND status <> 'pending', οπότε ένα μόνο NULL στη λίστα κάνει όλη τη συνθήκη άγνωστη. Πρόσεξέ το όταν η λίστα προέρχεται από subquery σε στήλη που επιτρέπει NULL:
-- Input: the tickets table above

SELECT id, status FROM tickets WHERE status NOT IN ('closed', 'pending');

-- Output:
-- id | status
-- ---+-------
-- 1  | open

SELECT id, status FROM tickets WHERE status NOT IN ('closed', NULL);

-- Output:
-- id | status
-- ---+-------
-- (0 rows)
  • Η MySQL και ο SQL Server αγνοούν τα πεζά/κεφαλαία από προεπιλογή, οπότε εκεί το 'Apple' <> 'apple' είναι false.

  • Όταν μπορείς, ζήτα αυτό που θέλεις. Το status <> 'closed' ταιριάζει και με κάθε status που θα προσθέσει κάποιος αργότερα, και επειδή συνήθως ταιριάζει με το μεγαλύτερο μέρος του πίνακα, η βάση δεδομένων σπάνια βοηθιέται από κάποιο index. Αν εννοείς «open ή pending», το status IN ('open', 'pending') το λέει ξεκάθαρα.

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

Το NOT (status = 'closed') είναι ένας άλλος τρόπος να γράψεις status <> 'closed' και παραλείπει τα NULL με τον ίδιο τρόπο.

Για σύγκριση χωρίς την έκπληξη του NULL, χρησιμοποίησε το IS DISTINCT FROM, ένα NULL-safe not equal που αντιμετωπίζει το NULL ως ξεχωριστή τιμή (ο SQL Server το πρόσθεσε το 2022, η SQLite στην 3.39):

-- Input: the tickets table above

SELECT id, status FROM tickets WHERE status IS DISTINCT FROM 'closed';

-- Output:
-- id | status
-- ---+--------
-- 1  | open
-- 3  | pending
-- 4  | NULL

-- MySQL has no IS DISTINCT FROM. Use its NULL-safe <=> instead:
SELECT id, status FROM tickets WHERE NOT (status <=> 'closed');

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

Χρησιμοποίησε το not equal όταν ένα query πρέπει να παραλείπει τις γραμμές με μια συγκεκριμένη τιμή. Οι περισσότερες χρήσεις ανήκουν σε μία από αυτές τις πέντε.

Φιλτράρισμα ενός status ή μιας κατηγορίας

Ακυρωμένες παραγγελίες, άκυρα τιμολόγια, μια κατηγορία που δεν έχεις σε απόθεμα: το <> αφήνει έξω τις γραμμές με αυτή την τιμή και κρατά όλες τις υπόλοιπες.

Παράλειψη μιας συγκεκριμένης εγγραφής

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

Περιορισμός αποτελεσμάτων με άλλες συνθήκες

Συνδύασε το <> με AND και OR για να εξαιρέσεις μια τιμή ενώ φιλτράρεις σε άλλες στήλες, όπως παραγγελίες που δεν είναι ακυρωμένες και ξεπερνούν ένα ποσό. Για να εξαιρέσεις πολλές τιμές της ίδιας στήλης, χρησιμοποίησε NOT IN.

Εύρεση γραμμών όπου δύο στήλες διαφέρουν

Το not equal δουλεύει και ανάμεσα σε δύο στήλες. Σύγκρινε μια παλιά τιμή με μια νέα, μια μετρημένη ποσότητα με την καταγεγραμμένη ή μια διεύθυνση αποστολής με μια διεύθυνση χρέωσης.

Διατήρηση γραμμών με τιμή που λείπει

Επειδή το <> παραλείπει τα NULL, αποφάσισε αν οι γραμμές χωρίς τιμή ανήκουν στο αποτέλεσμα. Πρόσθεσε OR column IS NULL για να τις κρατήσεις ή χρησιμοποίησε την NULL-safe σύνταξη παραπάνω.

Πραγματικά παραδείγματα του not equal

Σύνολο των τιμολογίων που μετράνε

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

-- Input: invoices
-- invoice_id | customer   | status | amount
-- -----------+------------+--------+--------
-- 1001       | Acme Corp  | paid   | 1200.00
-- 1002       | Birch & Co | void   | 450.00
-- 1003       | Acme Corp  | open   | 300.00
-- 1004       | Cobalt Ltd | paid   | 875.50

SELECT SUM(amount) AS invoiced
FROM invoices
WHERE status <> 'void';
-- Output: 2375.50

Ένας αναγνώστης βρίσκεται στο άρθρο 2. Δείξε τα άλλα άρθρα με το ίδιο θέμα:

-- Input: articles
-- id | title                | topic
-- ---+----------------------+-------
-- 1  | Indexing basics      | SQL
-- 2  | Your first JOIN      | SQL
-- 3  | Docker for beginners | DevOps
-- 4  | Window functions     | SQL

SELECT id, title
FROM articles
WHERE topic = 'SQL'
  AND id <> 2;

-- Output:
-- id | title
-- ---+-----------------
-- 1  | Indexing basics
-- 4  | Window functions

Εμφάνιση μόνο προϊόντων που μπορείς να πουλήσεις

Άφησε έξω τα προϊόντα που καταργήθηκαν, όσα δεν έχουν τιμή και όσα έχουν εξαντληθεί:

-- Input: products
-- product_name   | category     | price | stock_quantity
-- ---------------+--------------+-------+---------------
-- Desk Organizer | Office       | 18.50 | 40
-- Fax Machine    | Discontinued | 89.00 | 3
-- Gift Wrap      | Seasonal     | 0.00  | 120
-- Trail Backpack | Outdoors     | 64.00 | 0
-- Water Bottle   | Outdoors     | 12.99 | 75

SELECT product_name, category, price
FROM products
WHERE category <> 'Discontinued'
  AND price > 0
  AND stock_quantity <> 0;

-- Output:
-- product_name   | category | price
-- ---------------+----------+------
-- Desk Organizer | Office   | 18.50
-- Water Bottle   | Outdoors | 12.99

Εύρεση των πεδίων που άλλαξαν πραγματικά

Ένα audit log καταγράφει κάθε αποθήκευση, ακόμα και αυτές που δεν άλλαξαν τίποτα. Σύγκρινε τις δύο στήλες για να κρατήσεις μόνο τις πραγματικές αλλαγές:

-- Input: audit_log
-- log_id | field_name | old_value   | new_value
-- -------+------------+-------------+------------
-- 1      | email      | dan@old.com | dan@new.com
-- 2      | city       | Austin      | Austin
-- 3      | plan       | free        | pro

SELECT log_id, field_name, old_value, new_value
FROM audit_log
WHERE old_value <> new_value;

-- Output:
-- log_id | field_name | old_value   | new_value
-- -------+------------+-------------+------------
-- 1      | email      | dan@old.com | dan@new.com
-- 3      | plan       | free        | pro

Αν κάποια από τις στήλες μπορεί να είναι NULL, χρησιμοποίησε IS DISTINCT FROM (ή NOT (old_value <=> new_value) στη MySQL), αλλιώς μια τιμή που ορίζεται για πρώτη φορά δεν θα μετρήσει ως αλλαγή.

Υπενθύμιση σε όσους δεν έχουν πει ναι

Οι καλεσμένοι που δεν έχουν απαντήσει έχουν rsvp NULL, και αυτοί χρειάζονται την υπενθύμιση περισσότερο απ' όλους:

-- Input: invitations
-- guest       | email            | rsvp
-- ------------+------------------+------
-- Ines Moreau | ines@example.com | yes
-- Raj Patel   | raj@example.com  | no
-- Hana Sato   | hana@example.com | NULL
-- Leo Grant   | leo@example.com  | maybe

SELECT guest, email, rsvp
FROM invitations
WHERE rsvp <> 'yes' OR rsvp IS NULL;

-- Output:
-- guest     | email            | rsvp
-- ----------+------------------+------
-- Raj Patel | raj@example.com  | no
-- Hana Sato | hana@example.com | NULL
-- Leo Grant | leo@example.com  | maybe

Περισσότερα για το not equal

Σε αυτό το 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 Δωρεάν λήψη