Mysql
 sql >> Base de données >  >> RDS >> Mysql

Sélectionnez les lignes d'une table où la ligne d'une autre table avec le même identifiant a une valeur particulière dans une autre colonne

En fait, je ne recommanderais pas un JOIN pour cela - ou plutôt, je recommanderais un "semijoin ", qui est un concept d'algèbre relationnelle qui n'est pas directement exprimé en SQL. Une semi-jointure est essentiellement une jointure dans laquelle vous souhaitez récupérer des enregistrements d'une seule table, mais à condition qu'ils aient des enregistrements correspondants dans une table différente.

En notation SQL, ce concept est exprimé indirectement, en utilisant un IN clause , avec une sous-requête :

SELECT key, value
  FROM comments
 WHERE key IN
        ( SELECT comment_key
            FROM meta
           WHERE value = 1
        )
;

(MySQL finira par traduire cela en une semi-jointure en interne - essentiellement une sorte de jointure interne dégénérée - mais le IN clause est le moyen naturel de l'exprimer en SQL brut.)