Περισσότερα
Πώς να επιλέξετε όλες τις εγγραφές από έναν πίνακα που δεν υπάρχουν σε έναν άλλο πίνακα;
table1 (id, name) table2 (id, name)
Ερώτηση:
SELECT name
FROM table2
-- that are not in table1 already
417
3
Q: Τι συμβαίνει εδώ;
A: Για κάθε γραμμή προσπαθούμε να βρούμε μια γραμμή στον πίνακα 2 με την ίδια τιμή για τη στήλη "όνομα". Εάν δεν υπάρχει τέτοια γραμμή, αφήνουμε το τμήμα
table2
του αποτελέσματός μας κενό για τη συγκεκριμένη γραμμή. Στη συνέχεια, περιορίζουμε την επιλογή μας επιλέγοντας μόνο τις γραμμές του αποτελέσματος στις οποίες δεν υπάρχει η αντίστοιχη γραμμή. Τέλος, αγνοούμε όλα τα πεδία από το αποτέλεσμά μας εκτός από τη στήληname
(αυτή που είμαστε σίγουροι ότι υπάρχει, από τονtable1
).Αν και μπορεί να μην είναι η πιο αποδοτική μέθοδος που είναι δυνατή σε όλες τις περιπτώσεις, θα πρέπει να λειτουργεί βασικά σε κάθε μηχανή βάσης δεδομένων που προσπάθησε ποτέ να υλοποιήσει την ANSI 92 SQL
Μπορείτε είτε να κάνετε
ή
Δείτε αυτή την ερώτηση για 3 τεχνικές για να το πετύχετε αυτό
Αυτό είναι καθαρή θεωρία συνόλων, την οποία μπορείτε να επιτύχετε με την πράξη
minus
.