Jeg vil faktisk ikke anbefale et JOIN til dette - eller rettere, jeg vil anbefale et "semijoin ", som er et relationel-algebra-koncept, der ikke er direkte udtrykt i SQL. En semijoin er i bund og grund en join, hvor du kun ønsker at hente poster fra én tabel, men med det forbehold, at de har tilsvarende poster i en anden tabel.
I SQL-notation udtrykkes dette koncept indirekte ved at bruge en IN
klausul
, med en underforespørgsel
:
SELECT key, value
FROM comments
WHERE key IN
( SELECT comment_key
FROM meta
WHERE value = 1
)
;
(MySQL vil faktisk ende med at oversætte det tilbage til en semijoin internt - i det væsentlige en slags degenereret indre-join - men IN
klausul er den naturlige måde at udtrykke det på i rå SQL.)