Jag skulle faktiskt inte rekommendera en JOIN för detta — eller snarare, jag skulle rekommendera en "semijoin ", som är ett relationalgebra-koncept som inte uttrycks direkt i SQL. En semijoin är i huvudsak en join där du vill hämta poster från endast en tabell, men med förbehållet att de har motsvarande poster i en annan tabell.
I SQL-notation uttrycks detta koncept indirekt genom att använda en IN
klausul
, med en underfråga
:
SELECT key, value
FROM comments
WHERE key IN
( SELECT comment_key
FROM meta
WHERE value = 1
)
;
(MySQL kommer faktiskt att översätta det tillbaka till en semijoin internt - i huvudsak en sorts degenererad inner-join - men IN
sats är det naturliga sättet att uttrycka det i rå SQL.)